转换成JsonPatch

问题描述 投票:0回答:1

我有一个 jsonPatch [{"op":"add","path":"/details","value":["name","date"]} ],我想将其转换为 jsonPatch,如下所示:[ {“op”:“添加”,“路径”:“/详细信息”,“值”:[“名称”,“日期”]}]。即值变为大写。

我尝试将 jsonPatch 转换为 jsonNode 并迭代 jsonNode 并将每个值转换为大写并将值设置为 jsonNode。

一旦我们获得了modifiedjsonNode,我就使用了JsonPatch jsonpatch=JsonPatch.fromJson(modifiedJsonNode);转换为 JsonPatch

我得到的修改后的jsonNode:{“op”:“add”,“path”:“/details”,“value”:[“NAME”,“DATE”]}

但面临错误:无法从对象值(令牌

java.util.ArrayList<com.github.fge.jsonpatch.JsonPatchOperation>
)反序列化类型
JsonToken.FIELD_NAME
的值 [来源:未知;字节偏移量:#UNKNOWN]”,

java github json-patch jsonnode
1个回答
0
投票

尝试使用杰克逊

String json = "[{\"op\":\"add\",\"path\":\"/details\",\"value\":[\"name\",\"date\"]}]";

ObjectMapper mapper = new ObjectMapper();
ArrayNode parse = (ArrayNode) mapper.readTree(json);

for (JsonNode patch : parse) {
    ArrayNode valueNode = (ArrayNode) patch.get("value");
    // You can check valueNode != null 
    for (int i = 0; i < valueNode.size(); i++) {
        // Get value
        String upper = valueNode.get(i).asText().toUpperCase();
        // Update value
        valueNode.set(i, valueNode.textNode(upper));
    }
}

System.out.println(mapper.writeValueAsString(parse));

输出

[{"op":"add","path":"/details","value":["NAME","DATE"]}]
© www.soinside.com 2019 - 2024. All rights reserved.