c# json json.net

c# - Obtener el nombre/clave de un JToken con JSON.net



(2)

Tengo un JSON que se parece a esto

[ { "MobileSiteContent": { "Culture": "en_au", "Key": [ "NameOfKey1" ] } }, { "PageContent": { "Culture": "en_au", "Page": [ "about-us/" ] } } ]

Lo analizo como JArray:

var array = JArray.Parse(json);

Luego, recorro la matriz:

foreach (var content in array) { }

content es un JToken

¿Cómo puedo recuperar el "nombre" o la "clave" de cada artículo?

Por ejemplo, "MobileSiteContent" o "PageContent"


JToken es la clase base para JObject , JArray , JProperty , JValue , etc. Puede utilizar el método Children<T>() para obtener una lista filtrada de los hijos de JToken que son de cierto tipo, por ejemplo JObject . Cada JObject tiene una colección de objetos JProperty , a los que se puede acceder mediante el método Properties() . Para cada JProperty , puede obtener su Name . (Por supuesto, también puede obtener el Value si lo desea, que es otro JToken ).

Poniéndolo todo junto tenemos:

JArray array = JArray.Parse(json); foreach (JObject content in array.Children<JObject>()) { foreach (JProperty prop in content.Properties()) { Console.WriteLine(prop.Name); } }

Salida:

MobileSiteContent PageContent


El iterador predeterminado para JObject es como un diccionario que itera sobre pares de clave / valor.

JObject obj = JObject.Parse(response); foreach (var pair in obj) { Console.WriteLine (pair.Key); }