2016-04-28 6 views
0

Ich kann die folgenden Daten deserialisiert, die ich verwende zum Testen deserialisieren und bekam es von den World Bank die folgenden Abfrage verwenden:Kann nicht json Daten

http://api.worldbank.org/countries/IRL/indicators/SP.DYN.CBRT.IN? 
per_page=10&date=1960:2016&format=json 


[ 
    { 
    "page": 1, 
    "pages": 28, 
    "per_page": "2", 
    "total": 56 
    }, 
    [ 
    { 
     "indicator": { 
     "id": "SP.DYN.CBRT.IN", 
     "value": "Birth rate, crude (per 1,000 people)" 
     }, 
     "country": { 
     "id": "IE", 
     "value": "Ireland" 
     }, 
     "value": "21.2", 
     "decimal": "0", 
     "date": "1961" 
    }, 
    { 
     "indicator": { 
     "id": "SP.DYN.CBRT.IN", 
     "value": "Birth rate, crude (per 1,000 people)" 
     }, 
     "country": { 
     "id": "IE", 
     "value": "Ireland" 
     }, 
     "value": "21.5", 
     "decimal": "0", 
     "date": "1960" 
    } 
    ] 
] 

Meine Hauptklasse ist genanntes PageModel ist als solches definiert:

Die cl ass in dem Array verwendet wird, Daten genannt und wie folgt definiert ist:

public class Data 
{ 
    public Data() 
    { 
     this.Indicator = new Indicator(); 
     this.Country = new Country(); 
    } 

    [JsonProperty("indicator")] 
    public Indicator Indicator { get; set; } 

    [JsonProperty("country")] 
    public Country Country { get; set; } 

    [JsonProperty("date")] 
    public int Date { get; set; } 

    [JsonProperty("value")] 
    public float Value { get; set; } 

    [JsonProperty("decimal")] 
    public decimal Decimal { get; set; } 

} 

Sowohl die Länder- und Indikatorklassen sind wie folgt definiert:

public class Country 
{ 
    [JsonProperty("id")] 
    public string Id { get; set; } 

    [JsonProperty("value")] 
    public string Value { get; set; } 
} 

public class Indicator 
{ 
    [JsonProperty("id")] 
    public string Id { get; set; } 

    [JsonProperty("value")] 
    public string Value { get; set; } 
} 

Mein HttpClient Anruf die Daten korrekt zurückgibt, aber wenn ich versuche, die Daten mit der NewtonSoft JsonConvert.DeserializeObject Funktion deserialisieren:

PageModel pageModel = JsonConvert.DeserializeObject<PageModel>(data); 

Es gibt null.

Irgendwelche Ideen warum?

Danke.

+0

Haben Sie versucht, Teile der Zeichenfolge zu einer Klasse zu einer Zeit für das Debuggen von Deserialisieren? Auf diese Weise können Sie das Problem möglicherweise leichter finden. – RhinoDevel

+1

Es würde aussehen, dass die Felder Wert, Dezimal und Datum vom Typ String, nicht Float, Dezimal und Datum sind. –

+0

@RhinoDevel tat ich. Ich habe den Listen-Teil entfernt, um zu sehen, ob ich die grundlegenden Informationen aus dem PageModel bekommen konnte, aber leider nicht gut, fürchte ich! Gibt immer noch null zurück. – Thierry

Antwort

1

Ihre JSON-Daten in der falschen Format: Ihre json Um dies zu ändern und es wird funktionieren:

{ 
"page": 1, 
"pages": 28, 
"per_page": "2", 
"total": 56, 
"List":[ 
{ 
    "indicator": { 
    "id": "SP.DYN.CBRT.IN", 
    "value": "Birth rate, crude (per 1,000 people)" 
    }, 
    "country": { 
    "id": "IE", 
    "value": "Ireland" 
    }, 
    "value": "21.2", 
    "decimal": "0", 
    "date": "1961" 
}, 
{ 
    "indicator": { 
    "id": "SP.DYN.CBRT.IN", 
    "value": "Birth rate, crude (per 1,000 people)" 
    }, 
    "country": { 
    "id": "IE", 
    "value": "Ireland" 
    }, 
    "value": "21.5", 
    "decimal": "0", 
    "date": "1960" 
} 
] 
} 
+0

Es funktioniert mit diesem JSON. Ich habe es selbst versucht! –

+0

@Sattish, du hast recht, aber warum in aller Welt würde die Weltbank solch ein ungültiges JSON erzeugen !!! Macht keinen Sinn! Was für eine Zeitverschwendung und nochmals vielen Dank für Ihre Hilfe. – Thierry