JSON-Serialisierung / Deserialisierung in ASP.Net Core

131

Da es keine ist JavaScriptSerializer, welche native Implementierung kann verwendet werden , zu handhaben ?

Ich habe es bemerkt JsonResultund kann damit Daten in JSON formatieren, aber wie deserialisiere ich?

Oder fehlen mir vielleicht einige Abhängigkeiten project.json?

Jakub Wisniewski
quelle

Antworten:

234

Sie können verwenden Newtonsoft.Json, es ist eine Abhängigkeit, von Microsoft.AspNet.Mvc.ModelBindingder eine Abhängigkeit von ist Microsoft.AspNet.Mvc. Sie müssen also keine Abhängigkeit in Ihre project.json einfügen.

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

Beachten Sie, dass Sie bei Verwendung eines WebAPI-Controllers nicht mit JSON arbeiten müssen.

UPDATE ASP.Net Core 3.0

Json.NET wurde aus dem gemeinsam genutzten ASP.NET Core 3.0-Framework entfernt.

Sie können die neuen JSON-Serializer-Ebenen zusätzlich zu den leistungsstarken Utf8JsonReaderund verwenden Utf8JsonWriter. Es deserialisiert Objekte aus JSON und serialisiert Objekte nach JSON. Die Speicherzuweisungen werden minimal gehalten und unterstützen das asynchrone Lesen und Schreiben von JSON mit Stream.

Verwenden Sie zunächst die JsonSerializerKlasse im System.Text.Json.SerializationNamespace. Informationen und Beispiele finden Sie in der Dokumentation .

So verwenden Sie Json.NET in einem ASP.NET Core 3.0-Projekt:

    services.AddMvc()
        .AddNewtonsoftJson();

Weitere Informationen finden Sie in der Json.NET-Unterstützung in Migration von ASP.NET Core 2.2 auf 3.0 Preview 2 .

Agua vom Mars
quelle
Jetzt hat AspNetCore.Mcv keine Abhängigkeiten von Newtonsoft.JSON. Microsoft.AspNet.Mvc.Formatters.Json-Assembly, die für die Serialisierung verwendet wird.
Roman Pokrovskij
9
@RomanPokrovskij, falsch: Microsoft.AspNetCore.Mvc.Formatters.Jsonhat eine Abhängigkeit Microsoft.AspNetCore.JsonPatchvon Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua von mars
Sie können auch JsonConvert.DeserializeObject <IhreKlasse> (json) verwenden, um eine Deserialisierung für eine bestimmte Klasse durchzuführen.
Nuno Ribeiro
13

.net Kern

using System.Text.Json;

Zu serialisieren

var jsonStr = JsonSerializer.Serialize(MyObject)

Deserialisieren

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

Weitere Informationen zum Ausschließen von Eigenschaften und Nullen finden Sie auf dieser Microsoft-Seite

NoloMokgosi
quelle
Wissen Sie, wie man JSON zu einem dynamischen Typ deserialisiert?
zolty13