private static final ObjectMapper MAPPER = new ObjectMapper();
public static JsonNode stringToJsonNode(String jsonString) {
if (StringUtils.isBlank(jsonString)) {
return null;
}
try {
return MAPPER.readTree(jsonString);
} catch (Exception e) {
LOGGER.error("json convert exception", e);
}
return null;
}
public static void setJsonNodeValue(JsonNode node, String attrs, JsonNode data) {
int index = attrs.indexOf('.');
if (index == -1) {
ObjectNode node1 = (ObjectNode) node;
node1.set(attrs, data);
} else {
String s1 = attrs.substring(0, index);
String s2 = attrs.substring(index + 1);
setJsonNodeValue(getJsonNode(node, s1), s2, data);
}
}
public static String replaceJsonVal(String key, String newVal, String json){
JsonNode jsonNode = JsonUtil.stringToJsonNode(json);
JsonNode newNode = new TextNode(newVal);
JsonNode parent = jsonNode.findParent(key);
JsonUtil.setJsonNodeValue(parent, key, newNode);
return jsonNode.toString();
}
public static void main(String[] args) throws JsonProcessingException {
String json = "{\"name\": \"张三\", \"phone\": \"13120928116\", \"driver\": \"\", \"gender\": \"1\", \"bankCity\": \"上海\", \"bankCardNo\": \"1\"}";
String str = replaceJsonVal("bankCardNo", "112233", json);
System.out.println(str);
}