У меня есть следующий код:
var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);
Входные данные в responsecontent
формате JSON, но они неправильно проанализированы в объекте. Как мне правильно десериализовать это?
Json
вSystem.Web.Helpers
, естьJsonQueryStringConverter
вSystem.ServiceModel.Web
, естьJavascriptSerializer
вSystem.Web.Script.Serialization
,DataContractJsonSerializer
вSystem.Runtime.Serialization.Json
, черт MS даже решил включить третью сторонуJson.NET
в ASP.NET Web API. Если вы думаете, что этого недостаточно, MS придумывает,System.Json
но в настоящее время не подходит для потребления. Путь в Microsoft Путь в путь .... Я выбираю наиболее привлекательное пространство имен.JsonValue
вWindows.Data.Json
котором только для Windows 8 и выше. Я люблю это. MS находится на миссии :)Ответы:
Я предполагаю, что вы не используете Json.NET (пакет Newtonsoft.Json NuGet). Если это так, то вы должны попробовать.
Он имеет следующие особенности:
Посмотрите на пример ниже. В этом примере
JsonConvert
класс используется для преобразования объекта в JSON и из него. Для этого есть два статических метода. Они естьSerializeObject(Object obj)
иDeserializeObject<T>(String json)
:источник
var
переменную типа, если я не знаю полную структуру моей цели? В частности, я использую Rally User Stories и хочу преобразовать их в объекты.JSON.parse('{"Expiry": "2008-12-28T00:00:00"}').Expiry
возвращает строку"2008-12-28T00:00:00"
, а не дату. он может быть превращен вDate
черезnew Date(str)
, ноJSON.parse
ничего не знает о датах. Вам нужно будет передать реверир, который проверит каждое строковое значение по шаблону.require
,include
,import
илиusing
заявления в своих ответах. Будет ли эта линия больно?Как здесь ответили - десериализовать JSON в C # динамический объект?
Это довольно просто с помощью Json.NET:
Или используя Newtonsoft.Json.Linq:
источник
object
, и вы не можете использовать индексирование для aobject
.Вот некоторые варианты без использования сторонних библиотек:
Смотрите ссылку для получения дополнительной информации о System.Web.Helpers.Json .
Обновление : в настоящее время самый простой способ получить
Web.Helpers
это использовать пакет NuGet .Если вас не интересуют более ранние версии Windows, вы можете использовать классы
Windows.Data.Json
пространства имен:источник
Если вам доступен .NET 4, проверьте: http://visitmix.com/writings/the-rise-of-json (archive.org)
Вот фрагмент этого сайта:
Этот последний Console.WriteLine довольно мило ...
источник
Еще одно нативное решение, для которого не требуются сторонние библиотеки, но есть ссылка на System.Web.Extensions, является JavaScriptSerializer. Это не новая, но очень неизвестная встроенная функция, начиная с 3.5.
..
и назад
источник
Вы также можете взглянуть на DataContractJsonSerializer
источник
System.Json работает сейчас ...
Установите nuget https://www.nuget.org/packages/System.Json
Образец :
источник
Используйте этот инструмент для генерации класса, основанного на вашем json:
http://json2csharp.com/
А затем используйте класс для десериализации вашего JSON. Пример:
Ссылки: https://forums.asp.net/t/1992996.aspx?Nested+Json+Deserialization+to+C+object+and+using+that+object https://www.newtonsoft.com/json/help /html/DeserializeObject.htm
источник
Попробуйте следующий код:
источник
System.Text.Json
.NET core 3.0 поставляется со
System.Text.Json
встроенным, что означает, что вы можете десериализовать / сериализовать JSON без использования сторонней библиотеки.Чтобы сериализовать ваш класс (ы) в строку JSON:
Чтобы десериализовать JSON в строго типизированный класс:
Так что, если у вас есть класс, как показано ниже:
Стоит отметить, что при использовании вашего собственного кода свойства JSON автоматически
System.Text.Json
не обрабатываются (однако это происходит при использовании запросов MVC / WebAPI и связывателя модели).camelCase
Чтобы решить эту проблему, вам нужно передать
JsonSerializerOptions
в качестве параметра.System.Text.Json также доступен для .Net Framework и .Net Standard в виде пакета Nu-get System.Text.Json
источник
JsonDocument.Parse
.Следующее с сайта MSDN, я думаю, поможет предоставить некоторые нативные функции для того, что вы ищете. Обратите внимание, что он указан для Windows 8. Один из таких примеров с сайта приведен ниже.
Он использует пространство имен Windows.Data.JSON .
источник
Вы можете использовать следующие расширения
источник
Я думаю, что лучший ответ, который я видел, был @MD_Sayem_Ahmed.
Ваш вопрос «Как я могу разобрать Json с C #», но кажется, что вы хотите декодировать Json. Если вы хотите расшифровать его, ответ Ахмеда хорош.
Если вы пытаетесь сделать это в ASP.NET Web Api, самый простой способ - создать объект передачи данных, содержащий данные, которые вы хотите назначить:
Вы просто добавили заголовок application / json к вашему запросу (например, если вы используете Fiddler). Затем вы должны использовать это в ASP.NET Web API следующим образом:
Это очень помогло мне, когда я работал над своим веб-интерфейсом, и упростило мою жизнь.
источник
источник
источник
System.Web
в свой проект ссылки.источник