2010-10-22 27 views
6

Sto cercando di eseguire alcune semplici manipolazioni JSON su Windows Phone 7. JSON.NET sembra ottimo, ma VS2010 si lamenta quando provo ad aggiungere un riferimento.Parsing JSON su Windows Phone 7

Mi consente di aggiungere la DLL Silverlight, ma mi ha avvertito che potrebbe comportare un comportamento strano delle app, quindi sono scettico sul fatto che funzioni effettivamente.

This sembra un ottimo modo per serializzare e deserializzare i dati, ma ho bisogno di interrogarlo effettivamente. Potrei usare questa tecnica per serializzarlo su un IQueryable, quindi usare LINQ su di esso? Posso in qualche modo convertire il JSON in XML e usare LINQ?

O dovrei fare io stesso manipolazioni di stringhe hacky e tristi?

Aggiornamento: Per qualche ragione, non posso anche ottenere VS2010 riconoscere DataContractJsonSerializer:

 // works 
     DataContractSerializer ser1 = new DataContractSerializer(); 

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

Update 2: Quanto segue si lamenta anche:

using System.Runtime.Serialization.Json; 

L'errore:

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

Sto facendo qualcosa di sbagliato, o JSON non è supportato in wp7?

Aggiornamento 3: Sembra che DataContractJsonSerializer si trovi nello spazio dei nomi System.Servicemodel.Web.

Aggiornamento 4: Ho aggiunto un riferimento alla DLL di Silverlight JSON.NET e sembra che funzioni correttamente per ora. Dita incrociate.

+0

Solo curioso; come si sta sviluppando per WP7? – Znarkus

+0

Perché usi ancora JSON.Net quando hai trovato DataContractJsonSerializer in System.ServiceModel.Web? Qualsiasi professionista? – codeclash

risposta

5

Sì, secondo il vostro Update 3 (quasi):
DataContractJsonSerializer è nell'assemblea System.Servicemodel.Web.dll, ma nel System.Runtime.Serialization.Json namespace.

Ha catturato un bel po 'di gente.

Felice che tu abbia funzionato.

0

Inoltre, se si utilizza l'attributo DataContract, questo è nello spazio dei nomi System.Runtime.Serialization e nell'assembly System.Runtime.Serialization.dll.