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?

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 .


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


Wissen Sie, wie man JSON zu einem dynamischen Typ deserialisiert?
zolty13
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.