在 C# 中循环一个 SimpleJSON 数组

Posted

技术标签:

【中文标题】在 C# 中循环一个 SimpleJSON 数组【英文标题】:Loop over a SimpleJSON array in C# 【发布时间】:2021-07-01 16:35:53 【问题描述】:

我有一个从我的网络服务器获取 JSON 的 Unity 项目。

[
  
    name: "foo",
    start: 1,
  ,
  
    name: "bar",
    start: 5,
  ,
  
    name: "baz",
    start: 10,
  ,
]

我正在使用 SimpleJSON 解析 JSON 字符串

  var res = JSON.Parse(www.downloadHandler.text);

访问单个数组元素没有问题。

Debug.Log(res[0]["name"].Value);
// logs "foo"

Debug.Log(res[1]["start"].AsInt);
// logs 5

但我不知道如何遍历每个对象并访问其属性。 (我的真实数据在数组中有超过3个对象)。

   foreach (var item in res) 
        string name = item["name"].Value;
   

给出错误:

CS0021:无法将带有 [] 的索引应用于“KeyValuePair”类型的表达式

这在 javascript 中是微不足道的,为什么在 C# 中这么难?我被困了一整天,我确定我错过了一些简单的东西。

【问题讨论】:

可能是item.Value["name"].Value? 【参考方案1】:

试试这个

for (int i = 0; i< res.Count; i++)  //or res.Count()
 
   var name res[i]["name"].Value;
....your code

你也可以用这个:

foreach( KeyValuePair<string, JSONNode> entry in res)

    // do something with entry.Value or entry.Key

但第一种方法更简单。

【讨论】:

谢谢。我很尴尬我没有尝试过。你能解释一下为什么手动循环与使用 foreach 不同吗?我认为它们在功能上是相同的。 还在习惯***,我的错。现在接受。你能解释一下为什么这行得通而 foreach 不行吗? @Henry 您可以使用 foreach,这是您访问对象的方式不正确。您收到的错误消息指定 JSONNode 类型无法使用 [] 访问。无论您访问 KeyValuePair 的 Key 的任何对象都是一个字符串,可以正确访问但您的 Value 是 JSONNode 类型。

以上是关于在 C# 中循环一个 SimpleJSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

C# 循环遍历未知维度的数组

C#中的foreach循环怎么用?

使用 SimpleJSON 从 Web API 解析 Unity 中的 JSON 数据数组

C# 提高数组查找循环性能

C#在循环内多次重新初始化数组

循环遍历一个大数组并将值加在一起 ​​C#