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 JsonNode getJsonNode(JsonNode jsonNode, String key) { if (jsonNode == null) { return null; } if (jsonNode.hasNonNull(key)) { return jsonNode.get(key); } 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);
}