2017-09-04 3 views
2

J'ai une chaîne JSON avec la structure suivanteComment analyser manuellement une chaîne JSON en net-core 2.0

{ 
    "resource": "user", 
    "method": "create", 
    "fields": { 
     "name": "John", 
     "surname: "Smith", 
     "email": "[email protected]" 
    } 
} 

Les clés à l'intérieur champs sont variables, cela signifie que je ne les connais pas à l'avance Donc, au lieu de désérialiser une chaîne json à un objet, j'ai besoin de traverser le json, afin d'obtenir les propriétés à l'intérieur les champs dans un dictionnaire ou quelque chose comme ça.

J'ai entendu parler de la bibliothèque Json.NET et de sa capacité à analyser des jsons dynamiques, mais je ne suis pas sûr que ce soit déjà inclus dans net-core ou non.

Quel serait le moyen standard/le plus simple d'accomplir cela dans net-core 2.0? Un exemple de code serait apprécié.

+1

Oui, vous pouvez utiliser Json.NET dans .NET de base. – MarcinJuraszek

Répondre

4

Oui. Vous pouvez ajouter le package Newtonsoft.json à votre projet de base .net. Et pour interroger l'objet json dynamique, vous pouvez utiliser l'objet JObject fourni par la bibliothèque pour analyser votre json dans un objet dynamique. Voici le link pour le document.

Compte tenu de votre échantillon de JSON il peut ressembler à ceci

var resource = JObject.Parse(json); 
foreach (var property in resource.fields.Properties()) 
{ 
    Console.WriteLine("{0} - {1}", property.Name, property.Value); 
} 
+0

Jobject ne contient pas de définition pour les champs ........... –

+0

Cela a fonctionné pour moi: foreach (var property in resource.Properties()) –

0

Json.NET est la bibliothèque de référence lors de la sérialisation d'objets .NET. Cependant, lorsque la structure des objets n'est pas statique, les API de l'espace de noms System.Json seront plus simples à utiliser. System.Json peut être utilisé dans .NET Core 2.0 en installant un paquet de NuGet comme ceci:

dotnet add package System.Json --version 4.4.0 

Voici un tutoriel intéressant sur la façon d'utiliser les API de l'espace de noms System.Json: Working with JSON in .NET – a Silverlight example