【发布时间】:2016-03-31 14:27:43
【问题描述】:
我需要选择 json 数组中包含“3”的用户。
{
"People":[
{
"id" : "123",
"firstName" : "Bill",
"lastName" : "Gates",
"roleIds" : {
"int" : ["3", "9", "1"]
}
},
{
"id" : "456",
"firstName" : "Steve",
"lastName" : "Jobs",
"roleIds" : {
"int" : ["3", "1"]
}
},
{
"id" : "789",
"firstName" : "Elon",
"lastName" : "Musk",
"roleIds" : {
"int" : ["3", "7"]
}
},
{
"id" : "012",
"firstName" : "Agatha",
"lastName" : "Christie",
"roleIds" : {
"int" : "2"
}
}
]}
最后,我的结果应该是 Elon Musk 和 Steve Jobs。这是我使用的代码(以及其他变体):
var roleIds = pplFeed["People"]["roleIds"].Children()["int"].Values<string>();
var resAnAssocInfo = pplFeed["People"]
.Where(p => p["roleIds"].Children()["int"].Values<string>().Contains("3"))
.Select(p => new
{
id = p["id"],
FName = p["firstName"],
LName = p["lastName"]
}).ToList();
我收到以下错误:
"Accessed JArray values with invalid key value: "roleIds". Int32 array index expected"
我将 .Values<string>() 更改为 .Values<int>() 仍然没有运气。
我做错了什么?
【问题讨论】:
-
您的 JSON 无效。上传到jsonformatter.curiousconcept.com查看问题。可能
{"People": [{ { "id" : "123" ...应该是{"People": [{ "id" : "123" ...,匹配的}也从末尾删除? -
好眼光。我已经更新了 json 以遵循正确的格式。但是,它仍然不起作用。知道我做错了什么吗?
标签: linq json.net linq-to-json