wake-up-neo.net

Wie man einen JSON-String manuell in net-core 2.0 parst

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.

6
opensas

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);
 }
18
Jaya

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

4
Matjaž Drolc
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));