2016-05-19 8 views
1

Ich möchte diesen JSON, der von einer API (OpenBank-Projekt) zurückgegeben wurde, in C# konvertieren. Aber als Neuling hatte ich eine Menge unnötiger Probleme.JSON-Deserialisierungsprobleme

{ 
    "banks": [ 
    { 
     "id": "rbs", 
     "short_name": "The Royal Bank of Scotland", 
     "full_name": "The Royal Bank of Scotland", 
     "logo": "http://www.red-bank-shoreditch.com/logo.gif", 
     "website": "http://www.red-bank-shoreditch.com" 
    }, 
    { 
     "id": "test-bank", 
     "short_name": "TB", 
     "full_name": "Test Bank", 
     "logo": null, 
     "website": null 
    }, 
    { 
     "id": "testowy_bank_id", 
     "short_name": "TB", 
     "full_name": "Testowy bank", 
     "logo": null, 
     "website": null 
    }, 
    { 
     "id": "nordea", 
     "short_name": "Nordea", 
     "full_name": "Nordea Bank AB", 
     "logo": "http://logonoid.com/images/nordea-logo.jpg", 
     "website": "http://www.nordea.com/" 
    }, 
    { 
     "id": "nordeaab", 
     "short_name": "Nordea", 
     "full_name": "Nordea Bank AB", 
     "logo": "http://logonoid.com/images/nordea-logo.jpg", 
     "website": "http://www.nordea.com/" 
    }, 
    { 
     "id": "hsbc-test", 
     "short_name": "HSBC Test", 
     "full_name": "Hongkong and Shanghai Bank", 
     "logo": null, 
     "website": null 
    }, 
    { 
     "id": "erste-test", 
     "short_name": "Erste Bank Test", 
     "full_name": "Erste Bank Test", 
     "logo": null, 
     "website": null 
    }, 
    { 
     "id": "deutche-test", 
     "short_name": "Deutche Bank Test", 
     "full_name": "Deutche Bank Test", 
     "logo": null, 
     "website": null 
    }, 
    { 
     "id": "obp-bankx-m", 
     "short_name": "Bank X", 
     "full_name": "The Bank of X", 
     "logo": "https://static.openbankproject.com/images/bankx/bankx_logo.png", 
     "website": "https://www.example.com" 
    } 
    ] 
} 

Ich habe die JSON-Zeichenfolge überprüft und es scheint richtig.

Nun das ist, was ich den Inhalt deserialisieren empfangen, um zu versuchen verwendet:

using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
{ 
    string content = reader.ReadToEnd(); 
    bankslist info = JsonConvert.DeserializeObject<bankslist>(content); 
} 

Dies sind die Klassen Ich bin mit (I verwendet json2csharp für diese):

public class bankslist 
{ 
    public List<banks> banklist { get; set; } 
} 

public class bankstuff 
{ 
    public banks banks; 
} 

public class banks 
{ 
    [JsonProperty(PropertyName = "id")] 
    public string id { get; set; } 

    [JsonProperty(PropertyName = "short_name")] 
    public string short_name { get; set; } 

    [JsonProperty(PropertyName = "full_name")] 
    public string full_name { get; set; } 

    [JsonProperty(PropertyName = "logo")] 
    public string logo { get; set; } 

    [JsonProperty(PropertyName = "website")] 
    public string website { get; set; } 
} 

Es scheint, dass ich keine der Informationen speicher, die ich in der Bankklasse haben möchte. Ich habe das versucht, aber keine Informationen werden angezeigt:

Was mache ich falsch?

+0

Willkommen Überlauf zu stapeln. Wenn eine der folgenden Antworten für Sie funktioniert, markieren Sie diese als akzeptiert, indem Sie auf das grüne Häkchen links neben der Antwort klicken. Wenn Sie ein wenig mehr Ansehen bekommen, können Sie auch Antworten aufwerten, die Sie hilfreich finden. –

+0

Danke für den Kopf Brian, der immer noch die Tricks des Handels hier lernt. :) –

Antwort

1

Sie sagten, Sie json2csharp verwendet, aber wenn ich Ihre JSON in json2csharp gestellt bekomme ich die folgende:

public class Bank 
{ 
    public string id { get; set; } 
    public string short_name { get; set; } 
    public string full_name { get; set; } 
    public string logo { get; set; } 
    public string website { get; set; } 
} 

public class RootObject 
{ 
    public List<Bank> banks { get; set; } 
} 

Sie deserialisieren dann in die RootObject.

string content = reader.ReadToEnd(); 
var info = JsonConvert.DeserializeObject<RootObject>(content); 

Sie können es sehen, hier zu arbeiten: https://dotnetfiddle.net/yTcnQh

+0

Hatte eine Tonne danke für die schnelle Antwort und einfache Lösung, der Link, den Sie hier setzen, wird mir in Zukunft viel helfen. –

0

Sie müssen die Liste der Banken auf Ihrer bankslist Klasse von banklist zu Banken benennen Sie die json Knoten entsprechen:

public class bankslist 
{ 
    public List<banks> banks { get; set; } 
} 
+0

danke Mann wusste nicht, dass es direkt vor mir war –