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