私は、jsonを返すapiからさまざまなアイテムをフェッチしようとしています。私が持っている問題は、jsonからプロパティを取得することです。これは、常に同じ名前であるとは限らないためです。以前にjsonファイルをデシリアライズしたことがありますが、それらはこれとは異なりました。ここに私が持っている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のドキュメントで、データセットの使用について何かを見ましたが、私はしません。それが実際に機能するかどうかを確認しますが、削除されているのを確認しました。これはかなり長い間私を悩ませてきたので、私は本当にこれを機能させたいと思っています。
これを行う方法を知っている人がいたら、どんな助けでも大歓迎です。
この状況を処理するには、Dictionary<string, T>
に逆シリアル化します。ここで、T
は、アイテムデータを保持するクラスです。次に例を示します。
public class Item
{
public string Name { get; set; }
public int Store { get; set; }
}
このようにデシリアライズします:
var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);