NewtonSoft JArray 两层深度提取以在 C# 中列出
NewtonSoft JArray two levels deep to extract to list in C#
我有以下代码:
JObject obj = JObject.Parse(jsonString);
var jarr = obj["data"].Value<JArray>();
List<Person> lst = jarr.ToObject<List<Person>>();
Console.WriteLine("{0}, {1}", lst[0].Name, lst[1].Age);
哪个有效。但我现在需要在 json 中深入两层:
..."data":[{"moredata":...
我正在尝试以下操作,但出现错误:
JObject obj = JObject.Parse(jsonString);
var jarr = obj["data"]["moredata"].Value<JArray>(); // This is not working to go two levels deep
List<Person> lst = jarr.ToObject<List<Person>>();
Console.WriteLine("{0}, {1}", lst[0].Name, lst[1].Age);
如能为上面的行指定正确的语法以在 json.
中深入两层,我们将不胜感激。
这是 json 数据的格式。我想删除整个“moredata”级别,因为它不是 Person class:
的一部分
{
"data": [{
"moredata": {
"first_name": "Bob",
"last_name": "Smith"
}
}, {
"moredata": {
"first_name": "Albert",
"last_name": "Rodgers"
}
}, {
"moredata": {
"first_name": "Dan",
"last_name": "Anderson"
}
}
]
}
根据您的 JSON 样本,以下是您获取人员列表的方式:
JObject obj = JObject.Parse(jsonString);
var jarr = obj["data"].Value<JArray>();
List<Person> lst = jarr.Select(a => a["moredata"].ToObject<Person>()).ToList();
换句话说,您可以像最初那样检索数组。然后,对于数组中的 每个项目 ,您要降低一个级别并将其转换为一个人。然后将所有这些人放入一个列表中。
我有以下代码:
JObject obj = JObject.Parse(jsonString);
var jarr = obj["data"].Value<JArray>();
List<Person> lst = jarr.ToObject<List<Person>>();
Console.WriteLine("{0}, {1}", lst[0].Name, lst[1].Age);
哪个有效。但我现在需要在 json 中深入两层:
..."data":[{"moredata":...
我正在尝试以下操作,但出现错误:
JObject obj = JObject.Parse(jsonString);
var jarr = obj["data"]["moredata"].Value<JArray>(); // This is not working to go two levels deep
List<Person> lst = jarr.ToObject<List<Person>>();
Console.WriteLine("{0}, {1}", lst[0].Name, lst[1].Age);
如能为上面的行指定正确的语法以在 json.
中深入两层,我们将不胜感激。这是 json 数据的格式。我想删除整个“moredata”级别,因为它不是 Person class:
的一部分{
"data": [{
"moredata": {
"first_name": "Bob",
"last_name": "Smith"
}
}, {
"moredata": {
"first_name": "Albert",
"last_name": "Rodgers"
}
}, {
"moredata": {
"first_name": "Dan",
"last_name": "Anderson"
}
}
]
}
根据您的 JSON 样本,以下是您获取人员列表的方式:
JObject obj = JObject.Parse(jsonString);
var jarr = obj["data"].Value<JArray>();
List<Person> lst = jarr.Select(a => a["moredata"].ToObject<Person>()).ToList();
换句话说,您可以像最初那样检索数组。然后,对于数组中的 每个项目 ,您要降低一个级别并将其转换为一个人。然后将所有这些人放入一个列表中。