gpt4 book ai didi

Java - 使用 jsonPath 根据当前值更新 Json

转载 作者:行者123 更新时间:2023-11-30 05:59:55 28 4
gpt4 key购买 nike

我设法使用 jsonPath 和此代码更新 json 对象

JSONObject json = new JSONObject("{\"data\":[{\"city\":\"New York\",\"name\":\"John\",\"age\":31},{\"city\":\"Paris\",\"name\":\"Jack\",\"age\":12}]}");
DocumentContext doc = JsonPath.parse(json.toString())
.set("$..name","newName");
System.out.println("doc.jsonString() = " + doc.jsonString());

输出:

doc.jsonString() = {"data":[{"city":"New York","name":"newName","age":31},{"city":"Paris","name":"newName","age":12}]}

现在我想根据旧值更新该值(通过对旧值应用函数)
类似的东西

DocumentContext doc = JsonPath.parse(json.toString())
.set("$..name",upper(oldValue))
.set("$..age", oldValue+10);

这将产生以下 json

 doc.jsonString() = doc.jsonString() = {"data":[{"city":"New York","name":"JOHN","age":41},{"city":"Paris","name":"JACK","age":22}]}

有人知道我如何能够像这样引用旧值吗?
问候,

最佳答案

您可以使用 DocumentContext 类的 map 函数,如下例所示:

DocumentContext json = JsonPath.using(configuration).parse(jsonStr);
DocumentContext result = json.map("$..name", (currentValue, configuration) -> {
return currentValue.toString().toUpperCase();
});
System.out.println(result.jsonString());

该示例将值更改为大写。

尝试在 Jsonpath DocumentContext class documentation 中检查它。 .

关于Java - 使用 jsonPath 根据当前值更新 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52442637/

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