使用 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 類包括 SelectToken 方法,但這需要一個關鍵引數。我可以使用帶有 lambda 符號的 JArray 如上所述從根中選擇一個元素嗎?
uj5u.com熱心網友回復:
好吧,假設您有一個有效的 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();
小提琴
uj5u.com熱心網友回復:
通過洗掉額外的“{}”來修復你的json
var json="{[{... your json ";
json= json.Substring(1,json.Length-2);
您可以使用 2 種方式進行搜索
1.反序列化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; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388483.html
下一篇:JSONArray拋出一個JSONArraytextmuststartwith'['at1[character2line1]例外
