Foros - Stratos

Stratos => Principiantes => Mensaje iniciado por: pichoneto en 30 de Mayo de 2011, 08:55:27 PM

Título: "Deserializar" JSON
Publicado por: pichoneto en 30 de Mayo de 2011, 08:55:27 PM
Muy buenas!

Tengo un problema con un JSON que no se cómo "deserializar". Quiero decir, se cómo hacerlo, pero es para un caso particular, y es que un objeto puede tener un número variable de campos. Me explico con código:


"body":
[
{
"type":"String",
"plain":"ASDF "
},
{
"type":"ExternalURL",
"plain":"http:\/\/www.url.com",
"url":"http:\/\/www.url.com",
"favicon":"http:\/\/bin.images.url.com"
}
]


Como veis, el "body" es una lista de objetos variables. No tengo ni idea de cómo hacer esto. He intentado hacer un objeto que tuviera los 4 campos y peta. Uno con los 2 comunes y también. Uno con los dos comunes y otro que herede de él y tenga los 2 que faltan. Pero será que estoy ofuscado, pues no veo cómo enlazar ambos de manera automática. Y el JSON lo obtengo de una página (es decir, no tengo manera de cambiarlo)

Estoy programando para windows phone 7.0 y usando DataContracJsonSerializer

Muchas gracias de antemano!
Título: Re: "Deserializar" JSON
Publicado por: fjfnaranjo en 30 de Mayo de 2011, 10:55:01 PM
Para el caso ese que comentas vas a tener que serializarlo a mano, sin el DataContracJsonSerializer, creo.

De todas formas, a ver si Vicente te lo puede confirmar, porque lo mismo hay algo para hacer lo que tu dices.
Título: Re: "Deserializar" JSON
Publicado por: Vicente en 30 de Mayo de 2011, 11:32:58 PM
Ni idea :D Pregunta por aqui a ver si te pueden ayudar:

http://social.msdn.microsoft.com/Forums/es-es/windowsphone7/threads
Título: Re: "Deserializar" JSON
Publicado por: pichoneto en 30 de Mayo de 2011, 11:58:18 PM
Llevo un rato temiéndomelo, tener que programarme mi propio serializer...

¿Hasta qué punto creeis que sería complicarlo hacerlo "bien"? Porque a mí lo que se me ocurre ahora es ir tirando de substrings 8o

Por cierto, gracias por el enlace, ya puse ahí el comentario a ver si hay suerte.

También ví por ahí la "librería" Json.NET, pero no se si se podrá usar en WP

Un saludo!

EDIT: De hecho, ni siquiera es necesario empezar uno desde 0, con heredar del DataContract y que simplemente, cuando no encuentre algo, pase en vez de tirar una exception de IlegalCast (o como fuera, ahora mismo no me acuerdo) me sería suficiente

EDIT 2: Al final he usado Json.NET, va muy bien la verdad, lo hizo todo exactamente como yo quería

Gracias!