Estoy tratando de determinar cómo acceder a los datos que están en mi JObject y no puedo por mi vida determinar cómo usarlos.
JObject Object = (JObject)Response.Data["my_key"];
Puedo imprimirlo en la consola haciendo Console.WriteLine (Object) y veo los datos, se ve así:
{
"my_data" : "more of my string data"
...
}
Pero NO tengo idea de cómo simplemente iterar / enumerar a través de él, ¿alguien tiene alguna idea? Estoy tan perdido en este momento.
((IEnumerable<KeyValuePair<string, JToken>>)obj).Select(...)
lugar de simple-viejoobj.Select(...)
; o al menos eso es lo que encontré en una parte de mi código.obj
tenía tipoJObject
; peroJObject
parece tener problemas similares adynamic
. El compilador no puede inferir los argumentos de tipo.Select
. Puedo darlos explícitamente,obj.Select<KeyValuePair<string, JToken>, (result type)>(...)
también funciona para míJObject
implementa ambosIEnumerable<KeyValuePair<string, JToken>>
yIEnumerable<JToken>
(indirectamente a travésJContainer
).JToken value
para recorrer el siguiente conjunto de pares?Los JObjects se pueden enumerar a través de objetos JProperty lanzándolos a un JToken :
Si tiene un JObject anidado dentro de otro JObject, no necesita lanzarlo porque el descriptor de acceso devolverá un JToken:
fuente
obj.Properties().Select(p => p.Name + ": " + p.Value)
.La respuesta no funcionó para mí. No sé cómo consiguió tantos votos. Aunque ayudó a señalarme en una dirección.
Esta es la respuesta que funcionó para mí:
fuente
Para personas como yo, adictos a linq , y según la respuesta de svick , aquí hay un enfoque de linq:
Ahora puedes hacer expresiones linq como:
O solo:
O este para iterar sobre todos los datos:
fuente