Ich habe eine Json-Saite mit folgender Struktur
{
"resource": "user",
"method": "create",
"fields": {
"name": "John",
"surname: "Smith",
"email": "[email protected]"
}
}
Die Schlüssel in fields sind variabel, das heißt, ich kenne sie nicht im Voraus
Anstatt einen Json-String zu einem Objekt zu deserialisieren, muss ich den Json durchqueren, um die Eigenschaften innerhalb von fields in einem Dictionary oder ähnlichem zu erhalten.
Ich habe von der Json.NET-Bibliothek und deren Fähigkeit gehört, dynamische Jsons zu analysieren, aber ich bin nicht sicher, ob sie bereits im Netzkern enthalten ist oder nicht.
Was wäre der Standard/einfachste Weg, dies in net-core 2.0 zu erreichen? Code-Beispiel wäre dankbar.
Ja. Sie können das Newtonsoft.json-Paket zu Ihrem .net-Kernprojekt hinzufügen. Um das dynamische Json-Objekt abzufragen, können Sie das von der Bibliothek bereitgestellte JObject
-Objekt verwenden, um Ihren Json in ein dynamisches Objekt zu parsen. Hier ist der Link für das Dokument.
Angenommen, Ihr Json-Sample könnte so aussehen
var resource = JObject.Parse(json);
foreach (var property in resource.fields.Properties())
{
Console.WriteLine("{0} - {1}", property.Name, property.Value);
}
Json.NET ist die Go-To-Bibliothek, wenn Sie .NET-Objekte serialisieren. Wenn die Struktur von Objekten jedoch nicht statisch ist, können APIs aus dem System.Json-Namespace einfacher verwendet werden. System.Json kann in .NET Core 2.0 verwendet werden, indem ein Paket von NuGet wie folgt installiert wird:
dotnet add package System.Json --version 4.4.0
Hier ein Nizza-Tutorial zur Verwendung von APIs aus dem Namespace System.Json: Mit JSON in .NET arbeiten - ein Silverlight-Beispiel
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));