在C#中为统一创建多个列表

在C#中为统一创建多个列表,c#,json,unity3d,C#,Json,Unity3d,尝试在c#中创建一个嵌套列表,该列表可以从unity中的json文件中获取数据 它现在给了我这个错误 错误CS1061:'List'不包含'decision'的定义,并且找不到接受'List'类型的第一个参数的可访问扩展方法'decision'。 我想访问MyDecision列表中的outcome1数组,但我最多只能访问它 void Start() { CardData CardData=新的CardData(); cardData.card.decision.outcome1=新的int[]{

尝试在c#中创建一个嵌套列表,该列表可以从unity中的json文件中获取数据 它现在给了我这个错误

错误CS1061:'List'不包含'decision'的定义,并且找不到接受'List'类型的第一个参数的可访问扩展方法'decision'。

我想访问MyDecision列表中的outcome1数组,但我最多只能访问它

void Start()
{
CardData CardData=新的CardData();
cardData.card.decision.outcome1=新的int[]{1,2,3};
}
[可序列化]
私有类CardData
{
公众名单卡;
}
[可序列化]
私密级MyCard
{
公共字符串[]讲话;
公开名单决定;
}
[可序列化]
私有类MyDecision
{
公开结果1;
公开结果2;
}
下面是我想要访问的JSON文件的内容

{
  "CardData" : [
    { "Speech" : ["Hi World."],
      "Decision":[
        {
        "Outcome1":[1,0,0],
        "Outcome2":[0,1,0]
        }
      ]
    },{
      "Speech": ["Hello","World"],
      "Decision":[
        {
        "Outcome1":[1,1,0],
        "Outcome2":[0,1,1]
        }
      ]
    }
  ]
}

因为这些是列表,您无法以您尝试的方式访问它们。有几个选项,一个是您可以使用递归方法调用,如本问题中的调用:

我将使用的路径是使用ForEach在列表中循环:

cardData
  .card.ForEach(card => 
    card.decision.ForEach((decision) =>
     {
       decision.outcome1 = new int[] { 1, 2, 3 };
      })
    );
这可能有一些缺陷,您可能想添加一些错误检查,但对我来说似乎还可以


您还应该听Pac0,命名是代码可读性的一个重要部分,因此当它是一个列表时,将名称设置为单数会令人困惑。

cardData.card
是一个数组,您正试图访问该数组的一项。您需要使用如下内容:
cardData.card[0].decision[0].ourcome1=newint[]{1,2,3}嵌套的
列表
”在哪里?我强烈建议使用一些命名约定从其他类型字段/属性中识别列表和数组。示例:使用复数(
卡片
决策
)。