让我们从以下JSON说起,我想选择价格最高的产品:
JObject o = JObject.Parse(@"{
'Stores': [
'Lambton Quay',
'Willis Street'
],
'Manufacturers': [
{
'Name': 'Acme Co',
'Products': [
{
'Name': 'Anvil',
'Price': 50
}
]
},
{
'Name': 'Contoso',
'Products': [
{
'Name': 'Elbow Grease',
'Price': 99.95
},
{
'Name': 'Headlight Fluid',
'Price': 4
}
]
}
]
}");
例如:
IEnumerable<JToken> pricyProducts = o.SelectTokens("$..Products[?(MAX(@.Price))].Name");
有人知道如何获得最大值/最小值吗?
答案 0 :(得分:2)
据我所知,JsonPath没有定义MAX
函数,并且在Json.Net中尚未实现。您可以改用LINQ-to-JSON查询来获得所需的结果:
IEnumerable<JObject> products = o.SelectTokens("$..Products")
.SelectMany(a => a.Children<JObject>());
decimal maxPrice = products.Max(p => (decimal)p["Price"]);
IEnumerable<JToken> pricyProducts = products.Where(p => (decimal)p["Price"] == maxPrice)
.Select(p => p["Name"]);