2017-05-18 7 views
0

Ich habe ein Json, die so etwas wie dies zurück:Parse Wörterbuch mit verschiedenen Arten von Werten

"Name" : { 
"1" : [ an array of class1 objects ], 
"2" : [ an array of class2 objects ], 
"3" : [ an array of class3 objects ], 
} 

Wenn jeder Schlüssel einen Wert des gleichen Typs hat, verwende ich diese:

public Dictionary<int, class1[]> object1 { get; set; } 

Aber Ich weiß nicht, wie es geht, wenn jeder Schlüssel eine andere Klasse von Objekten hat. Wie kann ich es tun?

+0

Warum nicht einen 'string' Schlüssel für jeden Fall verwenden? – Diego

+0

Ich schlage vor, entweder einen JsonConverter zu erstellen (Newtonsoft JSON vorausgesetzt, da Sie nicht gesagt haben, welche Bibliothek Sie verwenden), oder dynamisch zu verwenden. – john

+0

@Diego können Sie angeben, was Sie meinen? –

Antwort

0

Sie könnten versuchen, eine Reihe von Objekten wie diese

public Dictionary<int, object[]> ObjectsDictionary { get; set; } 

ich unten Notiz ein Beispiel schrieb zu verwenden, dass ich in meinem Beispiel einen String-Schlüssel verwenden können Sie jedoch int stattdessen wird es kein Problem sein,


    class Program 
    { 
     public static Dictionary ObjectsDictionary { get; set; } 

     static void Main(string[] args) 
     { 
      ObjectsDictionary = new Dictionary(); 
      Class1[] classes1 = 
      { 
       new Class1 {X = 54, Y = 454}, 
       new Class1 {X = 1, Y = 2} 
      }; 
      Classe2[] classes2 = 
      { 
       new Classe2 {IsSomthing = true, Name = "String 1 class 2"}, 
       new Classe2 {IsSomthing = false, Name = "String 2 class 2"} 
      }; 

      ObjectsDictionary.Add("Key 1",classes1); 
      ObjectsDictionary.Add("Key 2",classes2); 

     } 

    } 
    class Class1 
    { 
     public int X { get; set; } 
     public int Y { get; set; } 
    } 

    class Classe2 
    { 
     public String Name { get; set; } 
     public Boolean IsSomthing { get; set; } 
    } 
+0

Dies scheint mit dem Parser zu arbeiten! Aber wenn ich ObjectsDictionary [0] versuche, bekomme ich Fehler \t CS0176 \t Mitglied kann nicht mit einer Instanzreferenz zugegriffen werden; qualifiziere es stattdessen mit einem Typnamen –

Verwandte Themen