2010-10-22 6 views
6

que estoy tratando de hacer alguna manipulación sencilla JSON en el teléfono de Windows 7. JSON.NET se ve muy bien, pero VS2010 se queja cuando intento agregar una referencia a él.El análisis de JSON en Windows Phone 7

Me permitió añadir el archivo DLL Silverlight, pero me advirtió que podría resultar en un comportamiento extraño aplicación, así que estoy escéptico de que funcionaría realmente.

This parece una buena forma de serializar y deserializar los datos, pero tengo que consultar en realidad. ¿Podría usar esta técnica para serializarla en un IQueryable, y luego usar LINQ en ella? ¿Puedo de alguna manera convertir JSON a XML y usar LINQ?

¿O debería hacer la manipulación hacky y triste yo mismo?

actualización: Por alguna razón, no puedo incluso conseguir VS2010 para reconocer DataContractJsonSerializer:

 // works 
     DataContractSerializer ser1 = new DataContractSerializer(); 

     // the type or namespace 'DataContractJsonSerializer' could not be found ... 
     DataContractJsonSerializer ser = new DataContractJsonSerializer(); 

Actualización 2: Lo siguiente también se queja:

using System.Runtime.Serialization.Json; 

El error:

The type or namespace name 'Json' does not exist in the namespace 'System.Runtime.Serialization' (are you missing an assembly reference?)

¿Estoy haciendo algo mal o JSON no es compatible con wp7?

Actualización 3: Parece que DataContractJsonSerializer se encuentra en el espacio de nombres System.Servicemodel.Web.

Update 4: He añadido una referencia a la DLL Silverlight JSON.NET, y parece estar funcionando bien por ahora. Dedos cruzados.

+0

Simplemente curioso; ¿Cómo se está desarrollando para WP7? – Znarkus

+0

¿Por qué todavía usa JSON.Net cuando encontró DataContractJsonSerializer en System.ServiceModel.Web? Cualquier pros? – codeclash

Respuesta

5

Sí, como por su Actualización 3 (casi):
DataContractJsonSerializer es en el montaje System.Servicemodel.Web.dll, pero en el espacio de nombres System.Runtime.Serialization.Json.

Ha atrapado a bastantes personas.

Me alegro de que haya conseguido que esto funcione.

0

Además, si usa el atributo DataContract, esto está en el espacio de nombres System.Runtime.Serialization y en el ensamblaje System.Runtime.Serialization.dll.