我有一个要求,我需要更新 JSON 中的值。我需要更新的密钥的路径也基于某些条件,所以我必须在属性文件中维护路径。这是我的 JSONString jsonString = "{\"delivery_codes\": [{\"postal_code\": {\"district\": \"District1\", \"pin\": 201001, \"pre_paid\": \"Y\", \"cash\": \"Y\", \"pickup\": \"Y\", \"repl\": \"N\", \"cod\": \"Y\", \"is_oda\": \"N\", \"sort_code\": \"GB\", \"state_code\": \"UP\"}}]}";现在我的要求是假设我需要将 pre_paid 的值更新为 N 但需要动态的 pre_paid 的路径,因为有时我可能需要更新 state_code 或 sort_code 或 pre_paid 等。所以我使用了 JSONPath:String jsonPathExpressionForDistrict = "$['delivery_codes'][0]['postal_code']['district']";String jsonPathExpressionForState_code = "$['delivery_codes'][0]['postal_code']['state_code']";这些路径我需要存储在一些属性文件/数据库中。我可以通过以下代码读取该属性:JsonPath.parse(jsonString).read(jsonPathExpressionForDistrict , JsonNode.class) -> This gives me value 'District1'但是当我尝试使用以下代码更新值时:JsonPath.parse(jsonString).put(jsonPathExpressionForDistrict , "District2", String.class);这给了我以下错误:线程“main”com.jayway.jsonpath.InvalidModificationException 中的异常:只能在 com.jayway.jsonpath.internal.PathRef$ObjectPropertyPathRef.put(PathRef.java:265) 的地图中添加属性到 com.jayway.jsonpath.JsonPath .put(JsonPath.java:304) at com.jayway.jsonpath.internal.JsonContext.put(JsonContext.java:221) at com.jayway.jsonpath.internal.JsonContext.put(JsonContext.java:199) at com。 .service.ServiceImpl.main(ServiceImpl.java:179)有人请指导我。
3 回答
森栏
TA贡献1810条经验 获得超5个赞
我知道为时已晚,但也许这可以帮助其他人。OP 收到该错误,因为 valuejsonPathExpressionForDistrict
是属性的路径,而不是 JSON 对象或地图。
要添加district2
到postal_code
,路径应该是"$['delivery_codes'][0]['postal_code']"
。
要使用 JSonPath 更新/添加 JSON 中的任何值,我们可以使用帖子中提到的方式,但需要检查并确保源 JSON 对象中的路径有效。
添加回答
举报
0/150
提交
取消