使用这个Json字符串(无法更改,因为我从外部源接收到它(
{
"IsValid": true,
"Result": [
{
"PartNumber": "ABC",
"Id": "x123"
},
{
"PartNumber": "DEF",
"Id": "y456"
},
{
"PartNumber": "GHI",
"Id": "z789"
}
]
}
我需要的是一份零件号/供应清单。我喜欢这个
"ABC", "x123"
"DEF", "y456"
"GHI", "z789"
我只是使用foreach方法,我的问题是:我可以使用之类的方法吗
var props = obj.Descendants()
.OfType<JProperty>() .Where(p => p.Name== "PartNumber" || p.Name == "SupplyId")
... and now?
谢谢
您可以访问Result
数组的子令牌以获取PartNumber
和Id
值,然后使用Select
方法将它们映射到元组列表或匿名类型
var result = obj["Result"]?.Children()
.Select(t => (t["PartNumber"]?.Value<string>(), t["Id"]?.Value<string>()))
.ToList();
或
var result = obj["Result"]?.Children()
.Select(t => new { PartNumber = t["PartNumber"]?.Value<string>(), Id = t["Id"]?.Value<string>() })
.ToList();
如果我正确理解你的请求,你可以做这样的事情:
var jObj = JsonConvert.DeserializeObject<JObject>(json);
var result = jObj["Result"]
.Children()
.SelectMany(c => new[] { c["PartNumber"].ToString(), c["Id"].ToString()})
.ToList()
result
将包含零件号和ID的平面列表。