System.Text.Json
.NET-Kern 3.0 kommt mit System.Text.Json
eingebaut, was bedeutet, dass Sie JSON deserialisieren/serialisieren können ohne unter Verwendung einer Bibliothek eines Drittanbieters.
Serialisieren/Desialisieren
So serialisieren Sie Ihre Klasse(n) als JSON-String:
var json = JsonSerializer.Serialize(model);
Zur Deserialisierung des JSON in eine stark typisierte Klasse:
var model = JsonSerializer.Deserialize<Model>(json);
Parsen (.NET 6)
Mit .NET 6 wurde die System.Text.Json.Nodes Namespace, der DOM-Parsing, Navigation und Manipulation in ähnlicher Weise wie Newtonsoft.Json ermöglicht, indem die neuen Klassen JsonObject
, JsonArray
, JsonValue
y JsonNode
.
// JsonObject parse DOM
var jsonObject = JsonNode.Parse(jsonString).AsObject();
// read data from DOM
string name = jsonObject["Name"].ToString();
DateTime date = (DateTime)jsonObject["Date"];
var people = jsonObject["People"].Deserialize<List<Person>>();
Ähnliche Methoden gelten für JsonArray
. Diese Antwort bietet weitere Details zu JsonObject.
Es ist zu beachten, dass System.Text.Json
nicht automatisch verarbeiten camelCase
JSON-Eigenschaften bei Verwendung Ihres eigenen Codes (bei der Verwendung von MVC/WebAPI-Anfragen und dem Model Binder jedoch schon).
Um dieses Problem zu lösen, müssen Sie JsonSerializerOptions
als Parameter.
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // set camelCase
WriteIndented = true // write pretty json
};
// pass options to serializer
var json = JsonSerializer.Serialize(order, options);
// pass options to deserializer
var order = JsonSerializer.Deserialize<Order>(json, options);
System.Text.Json ist auch für .Net Framework und .Net Standard als Nu-get-Paket verfügbar System.Text.Json