设置嵌套json数组的值

时间:2017-04-21 10:54:23

标签: java arrays json jsonpath

我有一个嵌套的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"); 请帮助。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

$.Address.secondaryAddress.[?(@.mobile=='987654321')]

以上jsonpath查询将为您提供特定的secondaryAddress节点,其中mobile = 987654321 使用下面的表达式设置新的移动值 -

$.Address.secondaryAddress.[?(@.mobile=='987654321')].mobile