2010-10-22 4 views
6

Я пытаюсь сделать некоторые простые манипуляции JSON на Windows Phone 7. JSON.NET выглядит великолепно, но VS2010 жалуется, когда я пытаюсь добавить ссылку на него.Разбор JSON на Windows Phone 7

Это позволило мне добавить DLL Silverlight, но предупредил меня, что это может привести к странному поведению приложений, поэтому я скептически отношусь к тому, что это действительно сработает.

This выглядит как прекрасный способ сериализации и десериализации данных, но мне нужно действительно запросить его. Могу ли я просто использовать этот метод для сериализации его в IQueryable, а затем использовать LINQ? Могу ли я каким-то образом преобразовать JSON в XML и использовать LINQ?

Или я должен делать хакерские и грустные манипуляции строк самостоятельно?

Update: По некоторым причинам, я не могу даже получить VS2010 признать DataContractJsonSerializer:

 // works 
     DataContractSerializer ser1 = new DataContractSerializer(); 

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

Update 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?)

Я делаю что-то не так, или JSON не поддерживается в wp7?

Обновление 3: Похоже, что DataContractJsonSerializer находится в пространстве имен System.Servicemodel.Web.

Обновление 4: Я добавил ссылку на dll Silverlight JSON.NET, и теперь она работает нормально. Скрещенные пальцы.

+0

Просто любопытно; как развивается WP7? – Znarkus

+0

Почему вы все еще используете JSON.Net, когда вы нашли DataContractJsonSerializer в System.ServiceModel.Web? Любые профи? – codeclash

ответ

5

Да, в соответствии с вашим обновления 3 (почти):
DataContractJsonSerializer находится в System.Servicemodel.Web.dll сборке, но в System.Runtime.Serialization.Json пространстве имен.

Это поймало немало людей.

Рад, что у вас это работает.

0

Кроме того, если вы используете атрибут DataContract, это находится в пространстве имен System.Runtime.Serialization и в сборке System.Runtime.Serialization.dll.