Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Json访问数据集_C#_Asp.net_Json - Fatal编程技术网

C# 从Json访问数据集

C# 从Json访问数据集,c#,asp.net,json,C#,Asp.net,Json,我将JSON数据映射到我自己的C#类中,然后尝试在需要的地方显示各种数据,但是我遇到了一个小问题,在我认为应该能够获取数据的时候,我似乎无法获取数据。显然有些地方出了问题,我希望有人能给我指出正确的方向: JSON的示例代码片段: "items" { "0" { "name" "Riki's Dagger" "prefab" "default_item" "item_name" "#DO

我将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);
基本上,我的目标是能够获取循环中英雄使用的
数据,但我不能

在我的for each中,
itemgamesult.Items\u Game.Items
可以,但是
itemgamesult.Items\u Game.Items.Items\u Index
不可以,我看不出原因

当我使用点符号时,我无法访问
项目索引
,在我预期的地方没有
项目索引
。如果我把它放进去并尝试编译,我会看到:

错误1“System.Collections.Generic.List”不包含“Item_Index”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“Item_Index”(是否缺少using指令或程序集引用?)


任何帮助都会很棒。

问题是类
DotaItemsGameResultProperties
Items
属性是一个集合(
List
),因此它没有属性
Item\u索引
。不确定您想要实现什么,但解决这一问题的一种可能性是迭代此集合:

string dataToDisplay = "";

foreach (DotaItemsGameItems items in itemGameResult.Items_Game.Items)
{
    foreach (DotaItemsGameItem item in 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;
string dataToDisplay=“”;
foreach(itemGameResult.items\u Game.items中的DotaItemsGameItems项目)
{
foreach(DotaItemsGameItem-in-items.item\u索引)
{
dataToDisplay+=“项:”+Item.Name+”;
dataToDisplay+=”质量:“+item.item\u质量+”

”; dataToDisplay+=“属性:“+item.Used\u By\u Heroes+”

”; } } 返回数据显示;
这是为了说明您的数据结构,您可以用更简洁的方式:

string dataToDisplay = "";

var allItems = itemGameResult.Items_Game.Items.SelectMany(i => i.Item_Index);
foreach (DotaItemsGameItem item in allItems)
{
    dataToDisplay += "<h3> Item: " + item.Name + "</h3>";                 
    dataToDisplay += "<p> Quality: " + item.Item_Quality + "</p>";
    dataToDisplay += "<p> Attributes: " + item.Used_By_Heroes + "</p>";
}

return dataToDisplay;
string dataToDisplay=“”;
var allItems=itemgamesult.Items\u Game.Items.SelectMany(i=>i.Item\u Index);
foreach(所有项目中的DotaItemsGameItem项目)
{
dataToDisplay+=“项:”+Item.Name+”;
dataToDisplay+=”质量:“+item.item\u质量+”

”; dataToDisplay+=“属性:“+item.Used\u By\u Heroes+”

”; } 返回数据显示;
string dataToDisplay = "";

foreach (DotaItemsGameItems items in itemGameResult.Items_Game.Items)
{
    foreach (DotaItemsGameItem item in 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;
string dataToDisplay = "";

var allItems = itemGameResult.Items_Game.Items.SelectMany(i => i.Item_Index);
foreach (DotaItemsGameItem item in allItems)
{
    dataToDisplay += "<h3> Item: " + item.Name + "</h3>";                 
    dataToDisplay += "<p> Quality: " + item.Item_Quality + "</p>";
    dataToDisplay += "<p> Attributes: " + item.Used_By_Heroes + "</p>";
}

return dataToDisplay;