C # JSON-декодирование с помощью помощников Web Matrix - PullRequest
10 голосов
/ 23 февраля 2011

Я давно искал хороший и чистый способ преобразования объекта JSON в динамический объект.

(Я мог бы привести к объекту, но API потоковой передачи Twitter фактически отправляет два разных объекта JSON с возможностью будущих типов объектов!)

Код, который я использую в настоящее время от:

Десериализовать JSON в динамический объект C #?

Но это не самый чистый код, и я поиграл с Web Matrix и заметил, что у них есть хорошие методы JSON.Decode (string) и JSON.Encode (object), и хотел их использовать.

http://msdn.microsoft.com/en-us/library/system.web.helpers.json(v=vs.99).aspx

Добавление ссылки на System.Web.Helpers в мое консольное приложение C # Мне удалось скомпилировать решение с именем JSON.Decode, но ... оно выдает неприятное исключение.

Вероятно, это связано с тем, что я использую его не намеренно (вне Web Matrix), но есть идеи? Вероятно, ожидая простого, но не глупого ответа; -)

Попытка метода «System.Web.Helpers.Json.Decode (System.String)» для доступа к полю «System.Web.Helpers.Json._serializer» не удалась.


Я использую VS2010.

Подробнее: System.FieldAccessException было обнаружено Сообщение = Попытка метода «System.Web.Helpers.Json.Decode (System.String)» для доступа к полю «System.Web.Helpers.Json._serializer» не удалась. Источник = System.Web.Helpers Трассировки стека: в System.Web.Helpers.Json.Decode (строковое значение) в Components.DataCollection.ConvertTwitterStream.ConvertTweets () в C: \ Users \ Администратор \ Documents \ visual studio 2010 \ Projects \ ISMM \ Components \ DataCollection \ ConvertTwitterStream.cs: строка 35 InnerException:

Ответы [ 6 ]

13 голосов
/ 06 сентября 2011

Отладка вызовов для 'Json.Decode' завершается ошибкой, когда Процесс размещения Visual Studio включен (по умолчанию).Я обнаружил, что он работает с отключенным хостингом или при работе без отладчика.

Процесс хостинга можно отключить для вашего проекта, выполнив следующие инструкции: http://msdn.microsoft.com/en-us/library/ms185330.aspx

5 голосов
/ 05 марта 2011

Для поддержки ответа jbtule JsonFx v2 (http://github.com/jsonfx/jsonfx) делает это действительно легким. В приведенном ниже примере показан полный цикл обработки с динамическим объектом, который строится из строки JSON и затем сериализуется обратно в JSON.

string input = "{ \"foo\": true, \"array\": [ 42, false, \"Hello!\", null ] }";
dynamic value = new JsonReader().Read(input);
// verify that it works
Console.WriteLine(value.foo); // true
Console.WriteLine(value.array[0]); // 42
Console.WriteLine(value.array.Length); // 4

string output = new JsonWriter().Write(value);
// verify that it works
Console.WriteLine(output); // {"foo":true,"array":[42,false,"Hello!",null]}
3 голосов
/ 02 марта 2011

JsonFx Поддерживает несколько стратегий привязки json к объектам .net, включая динамические объекты.

https://github.com/jsonfx/jsonfx

2 голосов
/ 23 февраля 2011

Я не помню, поддерживала ли Json.NET динамические объекты, но кажется, что вы можете сделать это с помощью небольшого дополнительного пользовательского кода.

http://json.codeplex.com/ http://weblogs.asp.net/britchie/archive/2010/08/05/json-net-dynamic-extensions.aspx

1 голос
/ 07 мая 2012

Microsoft добавила вспомогательный класс Json в Web Matrix Beta 2. Пример кода здесь http://www.mikesdotnetting.com/Article/160/WebMatrix-Working-With-The-JSON-Helper

0 голосов
/ 24 мая 2011

Кажется, есть проблема с привилегиями при использовании Json.Decode в консольном приложении. Щелкните правой кнопкой мыши на вашем EXE и «Запуск от имени администратора ...», и оно должно работать.

Я не уверен, есть ли способ заставить Visual Studio запускать исполняемый файл от имени администратора для отладки или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...