2017-04-26 3 views
3

Ich versuche, verschiedene Elemente von einem API abzurufen, die einen JSON zurückgibt. Das Problem, das ich habe, ist, die Eigenschaften vom json zu bekommen, da es nicht immer der gleiche Name ist. Ich habe JSON-Dateien zuvor deserialisiert, aber sie waren anders als diese. Hier ist die json ich habe:Wie kann ich ein JSON-Dataset in .net-Core deserialisieren

{"2": {"name": "Cannonball", "store": 5}, "6": {"name": "Cannon base", "store": 187500}, "12289": {"name": "Mithril platelegs (t)", "store": 2600}, "8": {"name": "Cannon stand", "store": 187500}, "10": {"name": "Cannon barrels", "store": 187500}, "12": {"name": "Cannon furnace", "store": 187500}} 

Es ist eigentlich ein wenig größer dann, aber ich kann nicht herausfinden, wie leicht es deserialisieren, da die ID nicht einen richtigen Namen hat, auf der Dokumentation von newtonsoft .json Ich habe etwas über die Verwendung von Datensätzen gesehen, ich weiß nicht, ob das tatsächlich funktionieren würde, aber ich habe gesehen, dass sie entfernt wurden. Ich würde wirklich gerne arbeiten, da es mich schon seit einiger Zeit belästigt.

Wenn es jemanden gibt, der weiß, wie man das macht, würde jede Hilfe sehr geschätzt werden.

+0

Ist das ein Array? Es ist nicht von eckigen Klammern umgeben. Jeder JSON-Konverter wird denken, dass dies ein Objekt ist. Es ist gültig JSON, aber es scheint wie ein seltsames Ergebnis. Was ist die Quelle? –

+0

@AustinWinstanley Ich bekomme den JSON von [hier] (https://rsbuddy.com/exchange/names.json) es ist im Grunde eine Website, um alle Elemente aus einem Spiel zu sammeln, das ich spiele, mit den IDs, das Problem ist, dass ich brauche die IDs, in diesem Fall der Name des Objekts und der Name der Elemente. Sie haben eine weitere API, aber die andere enthält nur ein wenig mehr Informationen, hat noch IDs als Objektnamen – jasont20015

Antwort

6

Sie diese Situation durch Deserialisierung in eine Dictionary<string, T> wo T ist eine Klasse zu halten, die Positionsdaten, beispielsweise umgehen kann:

public class Item 
{ 
    public string Name { get; set; } 
    public int Store { get; set; } 
} 

Deserialize wie folgt aus:

var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json); 

Fiddle: https://dotnetfiddle.net/hf1NPP

+0

Funktioniert wie ein Charme, vielen Dank! – jasont20015

+0

Ich bin froh, dass ich helfen konnte. –

Verwandte Themen