2016-09-05 1 views
0

Comment analyser json dont l'objet Assets est inconnu?Parse json dont le nombre de données est incertain

Comme

{ 
    "ClassName": "Excel", 
    "Teacher": "Esther", 
    "Student": 50, 
    "Aircond": 0, 
    "Assets": { 
     "Chair": 50, 
     "Table": 50, 
     "Fan": 2, 
     and might be more here and is unknown to me 
    } 
} 
+0

Voici la solution [entrez la description du lien ici] (http://stackoverflow.com/a/2246724/3301006) – Dmitriy

Répondre

2

Vous pouvez utiliser dynamic en tant que type Assets:

public class RootObject 
{ 
    public string ClassName { get; set; } 
    public string Teacher { get; set; } 
    public int Student { get; set; } 
    public int Aircond { get; set; } 
    public dynamic Assets { get; set; } 
} 

Et puis

RootObject ro = JsonConvert.DeserializeObject<RootObject>(json); 
5

Si vous êtes sûr que le Assets sont juste un trousseau de clés avec différents types de valeurs, vous pouvez utiliser un IDictionary<string, object> pour stocker l'Assets:

public class MyClass 
{ 
    public string ClassName { get; set; } 
    public string Teacher { get; set; } 
    public int Student { get; set; } 
    public int Aircond { get; set; } 
    public IDictionary<string, object> Assets { get; set; } 
} 

var myClass = JsonConvert.DeserializeObject<MyClass>(json); 
0

Si vous voulez juste pour analyser le JSON sans créer un objet C# personnalisée, vous pouvez utiliser JObject.Parse.

string json = "{\n\t\"ClassName\": \"Excel\",\n\t\"Teacher\": \"Esther\",\n\t\"Student\": 50,\n\t\"Aircond\": 0,\n\t\"Assets\": {\n\t\t\"Chair\": 50,\n\t\t\"Table\": 50,\n\t\t\"Fan\": 2,\n\t\t\"More\": \"randomText\"\n\t}\n}"; 
var jObject = JObject.Parse(json); 
Console.WriteLine(jObject["Assets"]["More"]); 

Vous aurez besoin Newtonsoft.Json que vous pouvez installer à partir NuGet.