当数组位于根目录时,如何 select JArray 中的数组元素?
How do I select an array element in a JArray when the array is on the root?
使用 JSON.NET,我想在 JSON 数组中搜索包含键值的元素并从该元素获取 ID。因此,对于下面的 JSON,我想搜索 Url == "https://www.google.com/"
并获取 ID
.
的值
{
[
{
"Url": "https://www.google.com/",
"Type": "SEARCH",
"ID": 1
},
.
.
.
{
"Url": "https://www.someurl.com/",
"Type": "TYPE",
"ID": 100
}
]
}
JArray class 包含 SelectToken 方法,但这需要一个关键参数。
我可以使用带有 lambda 表示法的 JArray select 如上所述使用根元素之外的元素吗?
好吧,假设您有一个有效的 JSON 数组。您只需要申请即可。 JArray.Parse
然后基本的 linq 就可以了。
var sourceJson = @"
[
{
""Url"": ""https://www.google.com/"",
""Type"": ""SEARCH"",
""ID"": 1
},
{
""Url"": ""https://www.someurl.com/"",
""Type"": ""TYPE"",
""ID"": 100
}
]
";
var parsed = JArray.Parse(sourceJson);
var goog = parsed.FirstOrDefault(r => r["Url"].Value<string>() == "https://www.google.com/");
goog.ToString().Dump();
首先通过删除多余的“{ }”
来修复您的 json
var json="{[{... your json ";
json= json.Substring(1,json.Length-2);
您可以使用 2 种方式进行搜索
1.Deserialize json
var items= JsonConvert.DeserializeObject<List<Item>>(json);
var itemId=items.FirstOrDefault(i => i.Url== @"https://www.google.com/" ).ID;
- 解析json
var jItems=JArray.Parse(json);
var jItemId=jItems.FirstOrDefault(i => (string) i["Url"]== @"https://www.google.com/" )["ID"];
类 反序列化
public class Item
{
public string Url { get; set; }
public string Type { get; set; }
public int ID { get; set; }
}
使用 JSON.NET,我想在 JSON 数组中搜索包含键值的元素并从该元素获取 ID。因此,对于下面的 JSON,我想搜索 Url == "https://www.google.com/"
并获取 ID
.
{
[
{
"Url": "https://www.google.com/",
"Type": "SEARCH",
"ID": 1
},
.
.
.
{
"Url": "https://www.someurl.com/",
"Type": "TYPE",
"ID": 100
}
]
}
JArray class 包含 SelectToken 方法,但这需要一个关键参数。 我可以使用带有 lambda 表示法的 JArray select 如上所述使用根元素之外的元素吗?
好吧,假设您有一个有效的 JSON 数组。您只需要申请即可。 JArray.Parse
然后基本的 linq 就可以了。
var sourceJson = @"
[
{
""Url"": ""https://www.google.com/"",
""Type"": ""SEARCH"",
""ID"": 1
},
{
""Url"": ""https://www.someurl.com/"",
""Type"": ""TYPE"",
""ID"": 100
}
]
";
var parsed = JArray.Parse(sourceJson);
var goog = parsed.FirstOrDefault(r => r["Url"].Value<string>() == "https://www.google.com/");
goog.ToString().Dump();
首先通过删除多余的“{ }”
来修复您的 jsonvar json="{[{... your json ";
json= json.Substring(1,json.Length-2);
您可以使用 2 种方式进行搜索
1.Deserialize json
var items= JsonConvert.DeserializeObject<List<Item>>(json);
var itemId=items.FirstOrDefault(i => i.Url== @"https://www.google.com/" ).ID;
- 解析json
var jItems=JArray.Parse(json);
var jItemId=jItems.FirstOrDefault(i => (string) i["Url"]== @"https://www.google.com/" )["ID"];
类 反序列化
public class Item
{
public string Url { get; set; }
public string Type { get; set; }
public int ID { get; set; }
}