我有一个 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]”,
尝试使用杰克逊:
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"]}]