JSON серіалізація / десеріалізація в ASP.Net Core


131

Оскільки немає JavaScriptSerializer, яку вроджену реалізацію можна використовувати для вирішення цього питання?

Я помітив, JsonResultі я можу відформатувати дані в JSON за допомогою цього, але як я десеріалізую?

А може, я пропускаю деякі залежності в project.json?

Відповіді:


235

Ви можете використовувати Newtonsoft.Json, це залежність від Microsoft.AspNet.Mvc.ModelBindingякої є залежністю Microsoft.AspNet.Mvc. Отже, вам не потрібно додавати залежність у project.json.

#using Newtonsoft.Json
....
JsonConvert.DeserializeObject(json);

Зауважте, що за допомогою контролера WebAPI вам не потрібно мати справу з JSON.

ОНОВЛЕННЯ ASP.Net Core 3.0

Json.NET був видалений із загальної структури ASP.NET Core 3.0.

Ви можете використовувати нові шари серіалізатора JSON поверх високоефективних Utf8JsonReaderта Utf8JsonWriter. Він десеріалізує об'єкти з JSON і серіалізує об'єкти в JSON. Виділення пам’яті зберігаються мінімально і включає підтримку читання та запису JSON за допомогою асинхронного потоку.

Для початку використовуйте JsonSerializerклас у System.Text.Json.Serializationпросторі імен. Інформацію та зразки див. У документації .

Щоб використовувати Json.NET в проекті ASP.NET Core 3.0:

    services.AddMvc()
        .AddNewtonsoftJson();

Прочитайте підтримку Json.NET в Migrate з ASP.NET Core 2.2 на 3.0 Preview 2 для отримання додаткової інформації.


Тепер AspNetCore.Mcv не має залежності від Newtonsoft.JSON. Збірка Microsoft.AspNet.Mvc.Formatters.Json використовується для серіалізації.
Роман Покровський

9
@RomanPokrovskij, неправильно: Microsoft.AspNetCore.Mvc.Formatters.Jsonмає залежність від Microsoft.AspNetCore.JsonPatchякої має залежність до Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
з березня

Ви також можете використовувати JsonConvert.DeserializeObject <YourClass> (json) для десеріалізації в конкретний клас.
Нуно Рібейро

14

.net core

using System.Text.Json;

Серіалізувати

var jsonStr = JsonSerializer.Serialize(MyObject)

Десеріалізувати

var weatherForecast = JsonSerializer.Deserialize<MyObject>(jsonStr);

Для отримання додаткової інформації про виключення властивостей та нулів див. Цю сторону Microsoft


чи знаєте ви, як дезаріалізувати json до динамічного типу?
zolty13
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.