C#Json-从JsonArray中提取一个值列表



使用这个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数组的子令牌以获取PartNumberId值,然后使用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的平面列表。

最新更新