Разбор JSON на Windows Phone 7

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

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

Это выглядит как прекрасный способ сериализации и десериализации данных, но мне нужно на самом деле сделать запрос. Могу ли я просто использовать эту технику, чтобы сериализовать его в 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;

Ошибка:

Имя типа или пространства имен «Json» не существует в пространстве имен «System.Runtime.Serialization» (вам не хватает ссылки на сборку?)

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

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

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


person Nick Heiner    schedule 22.10.2010    source источник
comment
Просто любопытно; как развивается для WP7?   -  person Znarkus    schedule 22.10.2010
comment
Почему вы все еще используете JSON.Net, когда нашли DataContractJsonSerializer в System.ServiceModel.Web? Есть плюсы?   -  person codeclash    schedule 24.10.2010


Ответы (2)


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

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

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

person Matt Lacey    schedule 23.10.2010

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

person Daniel    schedule 16.05.2012