在 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 数组的主要内容,如果未能解决你的问题,请参考以下文章