2011-02-09 27 views
5

Necesito navegar una estructura Json ya que navegaría un XML usando XmlDocument.¿Cómo puedo navegar por cualquier árbol JSON en C#?

No se conoce la estructura, y necesito iterar sobre los nodos para analizar algunos datos.

¿Esto es posible?
Sé que puedo usar JavaScriptSerializer para deserializarlo en un tipo conocido, pero este no es el caso ya que puedo recibir cualquier json válido.

Estoy usando .NET 3.5 (SP1) y no puedo actualizar a 4.0 en este momento.
de actualizar a .NET 4.0 para utilizar tipos dinámicos (que se genialidad código de hecho)

+0

posible duplicado de [Parse JSON en C#] (http://stackoverflow.com/questions/1212344/parse-json-in-c) – Jason

+3

@Jason, esto no es un duplicado, específicamente declaro que no lo hago Conozco la estructura así que no puedo deserilizarla a un tipo conocido. – juan

+0

Derecha; la pregunta vinculada se centra en JSON.NET, no en JavaScriptSerializer. El primero le permite caminar e inspeccionar la estructura resultante, el último es para tipos estáticos. – Jason

Respuesta

3

leer este artículo:

Se le explica una forma de analizar JSON para un objeto dinámico que tiene un diccionario adentro.

Entonces, repetir un diccionario sería bueno con LINQ, ¿no?

--- O si estás en .NET 3.5 ... ---;)

¿Por qué no se implementa un método de extensión como "ToDictionary"?

Puede recibir texto JSON, luego analizar con una expresión regular y dividir propiedades y valores en un diccionario, todo hecho con el método de extensión sugerido.

Una muestra de cómo funcionaría que:

IDictionary<string, object> deserializedJson = jsonText.ToDictionary(); 

satisface sus necesidades?

--- AÚN AÚN OTRA VEZ (ahora tienes más opciones)! ---

Comprobar este proyecto de código abierto en CodePlex:

Tiene LINQ a JSON para que pueda leer y escribir JSON.

+0

Se me olvidó decir que estoy usando .NET 3.5 (Editar: Pero podría usar esa cosa de JavaScriptConverter, lo voy a intentar) – juan

+0

¡Ooops! Bueno, actualizaré mi respuesta –

+0

¡Revisa mi actualización! –

Cuestiones relacionadas