我有一个这样的JSON
{
"name": "Reporta",
"assignments": [
{
"person_id": 638020,
"hours_logged": 25.5
},
{
"person_id": 638020,
"hours_logged": 35.5
}
]
}
我必须从assignments数组中找到第一个人的id,我使用了以下代码
JObject lp_ask = JObject.Parse(response_json);
int assignee = (int)lp_ask["assignments"][0]["person_id"];
但是现在我必须从数组中找到记录max hours的person_id,我可以执行foreach循环,然后找到max value,但是有没有直接的选项可用?
5条答案
按热度按时间qxsslcnc1#
最好的方法是反序列化为一组静态类,但如果不想或不能这样做,也可以通过原始JSON进行查询:
tcbh2hod2#
我尝试使用SQL Server JSON支持在数据库级别解决此问题(适用于SQL Server 2016及更高版本)
下面是我针对您的需求使用的示例查询
请注意,我使用了numbers table SQL function来查询assignments下的每个节点。
我使用Row_Number()函数对分配的子行进行排序,并在main select中使用row_number()值为1的筛选条件
输出如下
kzmpq1sx3#
使用以下代码:
jaxagkaj4#
创建一个POCO对象(Person_Id、Hours_Logged),您可以将其反序列化为:
然后可以使用LINQ max函数:
编辑:这可能会帮助您:
py49o6xq5#
这样做很容易,例如,如果你想在一个json字符串中找到某个标记的最大值,只需执行以下操作: