我有一个要求,我需要更新 JSON 中的值。我需要更新的密钥的路径也基于某些条件,所以我必须在属性文件中维护路径。这是我的 JSON
String 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)
有人请指导我。
森栏
猛跑小猪
相关分类