gpt4 book ai didi

java - 为什么我无法使用 Jayway JsonPath 设置 json 属性的值?

转载 作者:行者123 更新时间:2023-12-02 01:53:28 25 4
gpt4 key购买 nike

我有一个要求,需要更新 JSON 中的值。我需要更新的 key 的路径也基于某些条件,因此我必须在属性文件中维护路径。这是我的 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);

这给了我以下错误:

Exception in thread "main" com.jayway.jsonpath.InvalidModificationException: Can only add properties to a map at com.jayway.jsonpath.internal.PathRef$ObjectPropertyPathRef.put(PathRef.java:265) at 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)

请有人指导我。

最佳答案

我知道已经晚了,但也许这可以帮助其他人。OP 收到该错误,因为值 jsonPathExpressionForDistrict 是属性的路径,而不是 JSON 对象或映射。

要将 district2 添加到 postal_code,路径应为 "$['delivery_codes'][0]['postal_code']" .

要使用 JsonPath 更新/添加 JSON 中的任何值,我们可以使用帖子中提到的方式,但是需要检查并确保源 JSON 对象中的路径有效。

关于java - 为什么我无法使用 Jayway JsonPath 设置 json 属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52645449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com