2014-01-22 13 views
5

Ich möchte eine Zeichenfolge o JSON und Ausgabedaten auf einer Schnur deserialisieren:Json.NET Deserialisieren Objekt gibt null zurück

public class Test 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public long revisionDate { get; set; } 
} 

private void btnRetrieve_Click(object sender, EventArgs e) 
{ 
    string json = @"{""Name"":{""id"":10,""name"":""Name"",""revisionDate"":1390293827000}}"; 
    var output = JsonConvert.DeserializeObject<Test>(json); 
    lblOutput.Text = output.name; 
} 

Dies soll zur Ausgabe der name Eigenschaft des Strings json. Es gibt jedoch nichts zurück.

Antwort

6

Der von Ihnen gepostete JSON kann in ein Objekt deserialisiert werden, das eine Name Propery vom Typ Test hat, nicht in eine Test Instanz.

Diese

string json = @"{""id"":10,""name"":""Name"",""revisionDate"":1390293827000}"; 

wäre eine Darstellung eines Test Instanz sein.

Ihre JSON könnte so deserialisiert in etwas werden:

public class Test 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public long revisionDate { get; set; } 
} 

public class Foo 
{ 
    public Test Name { get; set; } 
} 

// ... 


var output = JsonConvert.DeserializeObject<Foo>(json); 
lblOutput.Text = output.Name.name; 
+2

dazu verwenden, Hinzufügen, ist es manchmal Ihre JSON in ein Visualizer-Tool fallen hilft diese Art von Sachen bei Ihnen herausspringen zu sehen: http://www.jsoneditoronline.org/ – theMayer

0

Valid json für Test-Klasse ist unter

{ "Name": { "id": 10, "name" : "Name", "revisionDate": 1390293827000 } }

und auch nur Test Ihre json ist dann mehr Daten in containg Klasse so können Sie auch wie

Dictionary<string,Test> dictionary= JsonConvert.DeserializeObject<Dictionary<string,Test>>(json); 

Test oputput=dictionary["Name"];