С# JSON-декодирование с использованием помощников Web Matrix

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

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

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

Отключить JSON в динамический объект С#?

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

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

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

Возможно, это связано с тем, что я использую его не так, как предполагалось (внешняя веб-матрица), но любые идеи? Вероятно, ожидая простого, нет, это глупый ответ; -)

Попытка метода "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\Administrator\documents\visual studio 2010\Projects\ISMM\Components\DataCollection\ConvertTwitterStream.cs: строка 35 InnerException:

Ответ 1

Чтобы поддерживать ответ 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]}

Ответ 2

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

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

Ответ 3

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

https://github.com/jsonfx/jsonfx

Ответ 4

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

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

Ответ 6

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

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