2016-06-07 18 views
0

Ich versuche, ein JSON-Dokument in eine Klasse mit nur den Json* Tags in meiner Klasse zu deserialisieren.Wie deserialize ich ein JSON-Dokument in ein Dictionary <string, Liste <object>>

Wie mache ich das, wenn mein JSON-Dokument so aussieht?

{ 
    "id": "1", 
    "name" : "test", 
    "dictionary": [ 
        { 
         "obj" : "a", 
         "list" : [{ "Id" : "1"} , { "Id" : "2"}] 
        }, 
        { 
         "obj" : "b", 
         "list" : [{ "Id" : "3"} , { "Id" : "4"}] 
        } 
       ] 

} 

Mein C# Klasse sieht wie folgt aus:

public class Test 
{ 
    [JsonProperty("id")] 
    public string TestId {get;set;} 

    [JsonProperty("name")] 
    public string Name {get;set;} 

    [JsonProperty("dictionary")] 
    public Dictionary(string, List<object>) dict {get;set;} 
} 

jedoch in das Wörterbuch deserialisieren ausfällt. Mein Code ist gerade eine documentDb Abfrage wie folgt nutzen:

var response = _client.CreateDocumentQuery<Test>(collection.DocumentsLink, "SELECT * FROM root r"); 
+1

das kein JSON Wörterbuch - es ist ein Array von Objekten. –

+0

Fügen Sie Ihre JSON zu [http://json2csharp.com/](http://json2csharp.com/) und Ta Da .... – Eser

+0

Um fair zu sein, es scheint, dass die Liste der Objekte jeweils einen Schlüssel hat (unter der Eigenschaft "obj") und einem Wert, so gibt es wahrscheinlich eine Möglichkeit, den Serializer einzurichten, um das Muster zu erkennen und in ein Wörterbuch zu schreiben, wie er es möchte. – StriplingWarrior

Antwort

0

Sie benötigen POCO-Klassen für jede der verschachtelten Objekten in Ihrem JSON-Objekt Grafik zu erstellen.

Versuchen Deserialisieren mit den folgenden Klassen:

public class Test 
{ 
    [JsonProperty("id")] 
    public string TestId { get; set; } 

    [JsonProperty("name")] 
    public string Name { get; set; } 

    [JsonProperty("dictionary")] 
    public List<TestInnerItem> dictionary { get; set; } 
} 

public class TestInnerItem 
{ 
    public string Obj { get; set; } 

    public List<TestInnerInnerItem> List { get; set; } 
} 

public class TestInnerInnerItem 
{ 
    public string Id { get; set; } 
} 
Verwandte Themen