gpt4 book ai didi

C# JSON.Net 使用 LINQ 解析并获取与值匹配的所有元素的列表

转载 作者:行者123 更新时间:2023-11-30 20:48:00 27 4
gpt4 key购买 nike

我无法找到从 JObject 获取 json 数组列表的正确方法。
_name 数组中的元素应该等于foo

这是示例 json:

{
"doc": [{
"bob": [{
"tom": [{
"frank": [{
"category": [{
"_name": "foo",
"letters": "abc"
},
{
"_name": "foo",
"letters": "def"
},
{
"_name": "foo",
"letters": "ghi"
},
{
"_name": "foo",
"letters": "jkl"
}]
}]
}]
}]
}]
}

到目前为止,这是我的代码:

JObject o = JObject.Parse(File.ReadAllText(@"D:/Client/data.json"));

var results = from x in o["doc"].Children()
where x["_name"].Value<string>() == "foo"
select x;

我收到这个错误:

"Value cannot be null.\r\nParameter name: source"

如何获得一个列表,其中每个元素都是一个包含“_name”和“letters”的数组?

最佳答案

三个问题:

  • 您不想要 doc直接 child , 你想要后代。
  • 您正在使用 x["_name"].Value<string>()即使有没有_name属性(property)
  • 您正在使用 x["_name"].Value<string>()甚至对非对象 child

不过这些都很容易修复:

var doc = (JContainer) o["doc"];
var results = doc.Descendants()
.OfType<JObject>()
.Where(x => x["_name"] != null &&
x["_name"].Value<string>() == "foo");

关于C# JSON.Net 使用 LINQ 解析并获取与值匹配的所有元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com