2010-10-22 114 views
6

我正試圖在Windows Phone 7上做一些簡單的JSON操作。JSON.NET看起來不錯,但是當我嘗試添加對它的引用時,VS2010抱怨。解析Windows Phone 7上的JSON

它讓我添加Silverlight DLL,但警告我可能會導致怪異的應用程序行爲,所以我懷疑它實際上會起作用。

This看起來像序列化和反序列化數據的好方法,但我需要實際查詢它。我可以使用這種技術將它序列化到IQueryable,然後使用LINQ嗎?我可以以某種方式將JSON轉換爲XML並使用LINQ?

或者我應該自己做哈克和悲傷的字符串操縱?

更新:出於某種原因,我甚至不能VS2010承認DataContractJsonSerializer

 // works 
     DataContractSerializer ser1 = new DataContractSerializer(); 

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

更新2:下面還抱怨:

using System.Runtime.Serialization.Json; 

錯誤:

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

我做錯了什麼,或者是wp7中不支持JSON?

更新3:看起來像DataContractJsonSerializer位於System.Servicemodel.Web命名空間中。

更新4:我添加了對Silverlight JSON.NET dll的引用,它現在看起來工作正常。手指交叉。

+0

只是好奇; WP7的開發過程如何? – Znarkus 2010-10-22 19:45:00

+0

爲什麼當您在System.ServiceModel.Web中找到DataContractJsonSerializer時仍然使用JSON.Net?任何優點? – codeclash 2010-10-23 22:12:11

回答

5

是的,按你的更新3(幾乎):
DataContractJsonSerializer是在System.Servicemodel.Web.dll組裝,但在System.Runtime.Serialization.Json命名空間。

它被抓住了不少人。

很高興你似乎有這個工作。

0

另外,如果使用DataContract屬性,則此位於名稱空間System.Runtime.SerializationSystem.Runtime.Serialization.dll程序集中。