我有一个嵌套的JSON文档,我想在嵌入式JSON数组中设置一个特定的值,
例如: -
{
"name":"Jack",
"Address":{
"secondaryAddress":[{"name":"JOHN's Address",
"street":"new ave",
"city":"Canada",
"mobile":123456789
},
{"name":"Selena's Address",
"street":"second ave",
"city":"Canada",
"mobile":987654321
},
{"name":"Jack's Address",
"street":"third ave",
"city":"Canada"
}],
"primaryAddress":{},
}
}
我想在手机号码为987654321的特定secondaryAddress对象中将手机号码从987654321更改为456789123。
我在我的项目中使用jsonpath来获取/设置值 为了得到我会使用: -
$.Address.secondaryAddress[*].mobile
会返回一系列手机号码,如: -
[
123456789,
987654321
]
类似于set,
但我不知道如何继续这个场景,我想在数组中设置一个特定的对象。
我尝试使用此功能但仍设置所有数组对象的值: -
DocumentContext cxt = JsonPath.parse(jsonString);
cxt.set("$.Address.secondaryAddress[*].mobile",456789123,Criteria.where("$.Address.secondaryAddress[*].mobile").is("987654321");
请帮助。
提前致谢:)
答案 0 :(得分:0)
$.Address.secondaryAddress.[?(@.mobile=='987654321')]
以上jsonpath查询将为您提供特定的secondaryAddress节点,其中mobile = 987654321 使用下面的表达式设置新的移动值 -
$.Address.secondaryAddress.[?(@.mobile=='987654321')].mobile