2017-04-26 9 views
3

私はAPIから別の項目を取得しようとしていますが、これはjsonを返します。私が抱えている問題は、常に同じ名前ではないので、jsonからプロパティを取得することです。以前はjsonファイルを非直列化しましたが、これはこれとは異なりました。ここで私が持っているJSONだ:どうすれば.netコアのjsonデータセットを逆シリアル化できますか

{"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}} 

これは、実際にはこの後、少し大きいですが、idは本当の名前を持っていないので、私はnewtonsoftの文書に、簡単にそれをデシリアライズする方法を見つけ出すことはできません.json私はデータセットの使用について何かを見ましたが、実際にうまくいくかどうかはわかりませんが、削除されているのを見ました。私は今かなりの時間私を悩ませているので、これを稼働させるのが大好きです。

これを行う方法を知っている人がいるなら、どんな助けでも大歓迎です。

+0

それは配列ですか?角括弧で囲まれていません。どのJSONコンバーターもそれが1つのオブジェクトだと思うでしょう。これは有効なJSONですが、奇妙な結果に思えます。ソースは何ですか? –

+0

@AustinWinstanley私は[ここ](https://rsbuddy.com/exchange/names.json)からjsonを取得します。これは基本的には私がプレイするゲームからすべてのアイテムを集めるサイトですが、IDは問題ですこの場合のIDであるオブジェクトの名前、およびアイテムの名前。彼らはもう1つのAPIを持っていますが、もう1つは少しだけ情報を含んでいますが、依然としてオブジェクト名としてIDを持っています – jasont20015

答えて

6

あなたはTは、例えば、アイテムデータを保持するクラスですDictionary<string, T>にデシリアライズすることによって、このような状況に対処することができます

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

は次のようにデシリアライズ:

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

フィドル:https://dotnetfiddle.net/hf1NPP

+0

魅力のように動作します。 – jasont20015

+0

うれしいです。 –

関連する問題