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);
}