JSONデータをC#で自分のクラスにマッピングし、必要な場所にさまざまなデータを表示しようとしていますが、できるはずだと信じているときにデータを取得できないように見えるという小さな問題があります。明らかに何かがおかしいので、誰かが私を正しい方向に向けてくれることを望んでいました:
JSON のスニペットの例:
"items"
{
"0"
{
"name" "Riki's Dagger"
"prefab" "default_item"
"item_name" "#DOTA_Item_Rikis_Dagger"
"item_type_name" "#DOTA_WearableType_Daggers"
"model_player" "models/heroes/rikimaru/rikimaru_weapon.mdl"
"used_by_heroes"
{
"npc_dota_hero_riki" "1"
}
}
"1"
{
"name" "Anti-Mage's Glaive"
"prefab" "default_item"
"item_description" "#DOTA_Item_Desc_AntiMages_Glaives"
"item_name" "#DOTA_Item_AntiMages_Glaive"
"item_type_name" "#DOTA_WearableType_Glaive"
"model_player" "models/heroes/antimage/antimage_weapon.mdl"
"used_by_heroes"
{
"npc_dota_hero_antimage" "1"
}
}
次のように、これを自分のクラスにシリアル化するために以下を使用しています。
DotaItemsGameResult itemGameResult
= JsonConvert.DeserializeObject<DotaItemsGameResult>(rawItemDetailsJson);
私はこれを他の場所で使用しているので、これは問題なく機能しています。
ここで問題が発生します。
string dataToDisplay = "";
foreach (DotaItemsGameItem item in itemGameResult.Items_Game.Items.Item_Index)
{
dataToDisplay += "<h3> Item: " + item.Name + "</h3>";
dataToDisplay += "<p> Quality: " + item.Item_Quality + "</p>";
dataToDisplay += "<p> Attributes: " + item.Used_By_Heroes + "</p>";
}
return dataToDisplay;
私のコードはitemGameResult.Items_Game.Items
、.Items_Index
.
次のクラスがあります。
public class DotaItemsGameResult
{
public DotaItemsGameResultProperties Items_Game { get; set; }
}
public class DotaItemsGameResultProperties
{
public List<DotaItemsGameRarities> Rarities { get; set; }
public List<DotaItemsGameItems> Items { get; set; }
}
public class DotaItemsGameItems
{
public List<DotaItemsGameItem> Item_Index { get; set; }
}
public class DotaItemsGameItem
{
public string Name { get; set; }
public string Hidden { get; set; }
public string Item_Class { get; set; }
public string Item_Name { get; set; }
public string Item_Slot { get; set; }
public string Item_Quality { get; set; }
public string Min_Ilevel { get; set; }
public string Max_Ilevel { get; set; }
public string Item_Description { get; set; }
public string Item_Type_Name { get; set; }
public List<DotaItemsGameUsedByHero> Used_By_Heroes { get; set; }
}
基本的に、私の目的はUsed_By_Heroes
ループ内のデータを取得できるようにすることですが、できません。
私の for each ではitemGameResult.Items_Game.Items
問題ありませんがitemGameResult.Items_Game.Items.Item_Index
、そうではなく、理由がわかりません。
Item_Index
ドット表記を使用すると、にアクセスできませんItem_Index
。そこにあると思われる場所がありません。とにかくそれを入れてコンパイルしようとすると、次のように表示されます。
エラー 1 'System.Collections.Generic.List' には 'Item_Index' の定義が含まれておらず、タイプ 'System.Collections.Generic.List' の最初の引数を受け入れる拡張メソッド 'Item_Index' が見つかりませんでした (ディレクティブまたはアセンブリ参照を使用していますか?)。
どんな助けでも素晴らしいでしょう。