Serializacja / deserializacja JSON w ASP.Net Core

134

Skoro nie ma JavaScriptSerializer, jakiej implementacji natywnej można użyć, aby sobie z tym poradzić?

Zauważyłem JsonResulti mogę sformatować dane do JSON za pomocą tego, ale jak deserializować?

A może brakuje mi niektórych zależności w project.json?

Jakub Wiśniewski
źródło

Odpowiedzi:

238

Możesz użyć Newtonsoft.Json, jest to zależność od Microsoft.AspNet.Mvc.ModelBindingktórej jest zależnością Microsoft.AspNet.Mvc. Nie musisz więc dodawać zależności w swoim pliku project.json.

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

Uwaga, używając kontrolera WebAPI nie musisz zajmować się JSON.

ZAKTUALIZUJ ASP.Net Core 3.0

Json.NET została usunięta z udostępnionej platformy ASP.NET Core 3,0.

Możesz użyć nowych warstw serializatora JSON oprócz wysokowydajnych Utf8JsonReaderi Utf8JsonWriter. Deserializuje obiekty z formatu JSON i serializuje obiekty do formatu JSON. Alokacje pamięci są minimalne i obejmują obsługę odczytu i zapisu JSON w usłudze Stream asynchronicznie.

Aby rozpocząć, użyj JsonSerializerklasy w System.Text.Json.Serializationprzestrzeni nazw. Informacje i przykłady można znaleźć w dokumentacji .

Aby użyć Json.NET w projekcie ASP.NET Core 3,0:

    services.AddMvc()
        .AddNewtonsoftJson();

Przeczytaj obsługę Json.NET w Migrate from ASP.NET Core 2.2 to 3.0 Preview 2, aby uzyskać więcej informacji.

agua z marsa
źródło
Teraz AspNetCore.Mcv nie ma żadnych zależności od Newtonsoft.JSON. Zestaw Microsoft.AspNet.Mvc.Formatters.Json używany do serializacji.
Roman Pokrovskij
9
@RomanPokrovskij, źle: Microsoft.AspNetCore.Mvc.Formatters.Jsonma zależność do Microsoft.AspNetCore.JsonPatchktórego ma zależność do Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua z Marsa
Możesz również użyć JsonConvert.DeserializeObject <YourClass> (json) do deserializacji do określonej klasy.
Nuno Ribeiro
23

.net core

using System.Text.Json;

Aby serializować

var jsonStr = JsonSerializer.Serialize(MyObject)

Deserialize

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

Aby uzyskać więcej informacji na temat wykluczania właściwości i wartości null, zobacz tę stronę firmy Microsoft

NoloMokgosi
źródło
1
czy wiesz, jak deserializować json do typu dynamicznego?
zolty13