Java 使用 JsonPath 递归替换任意层级包含 mobile 的属性为 1234:字符串包含字符串示例
{/'title/':/'Java 使用 JsonPath 递归替换任意层级包含 mobile 的属性为 1234:字符串包含字符串示例/', /'description/':/'本文介绍如何使用 Java 的 JsonPath 和 Jackson 库来递归替换字符串中任意层级包含 'mobile' 的属性为 '1234'。示例展示了如何处理字符串包含字符串的 JSON 数据。/', /'keywords/':/'Java, JsonPath, Jackson, 递归替换, 字符串, mobile, 属性, JSON, 处理/', /'content/':/'要使用 JsonPath 来递归替换任意层级包含 ///'mobile///' 的属性为 ///'1234///',你可以使用 Jackson 库来处理 JSON 数据。以下是一个示例代码,演示如何使用 JsonPath 和 Jackson 来实现此功能://n//njava//nimport com.fasterxml.jackson.databind.JsonNode;//nimport com.fasterxml.jackson.databind.ObjectMapper;//nimport com.jayway.jsonpath.JsonPath;//nimport net.minidev.json.JSONArray;//n//npublic class JsonPathExample {//n public static void main(String[] args) throws Exception {//n String json = /'{///'name///': ///'John///', ///'age///': 30, ///'contact///': ///'{///'mobile///': ///'1234567890///'}/', ///'address///': {///'street///': ///'123 Main St///', ///'city///': ///'New York///'}}/';//n ObjectMapper objectMapper = new ObjectMapper();//n JsonNode rootNode = objectMapper.readTree(json);//n//n replaceMobileProperties(rootNode);//n//n String modifiedJson = objectMapper.writeValueAsString(rootNode);//n System.out.println(modifiedJson);//n }//n//n private static void replaceMobileProperties(JsonNode node) {//n if (node.isObject()) {//n // 遍历对象属性//n node.fields().forEachRemaining(entry -> {//n String key = entry.getKey();//n JsonNode value = entry.getValue();//n//n if (///'mobile///'.equals(key) && value.isTextual()) {//n // 替换mobile属性的值//n ((com.fasterxml.jackson.databind.node.TextNode)value).textValue(///'1234///');//n } else {//n // 递归处理子节点//n replaceMobileProperties(value);//n }//n });//n } else if (node.isArray()) {//n // 遍历数组元素//n JSONArray jsonArray = new JSONArray(node.toString());//n for (int i = 0; i < jsonArray.size(); i++) {//n replaceMobileProperties(jsonArray.get(i));//n }//n }//n }//n}//n//n//n在上面的代码中,我们首先使用 Jackson 的 ObjectMapper 将 JSON 字符串解析为 JsonNode 对象。然后,我们使用 replaceMobileProperties 方法递归遍历 JsonNode 对象的属性和子节点。如果属性名为 ///'mobile///' 且值为字符串类型,则使用 ((com.fasterxml.jackson.databind.node.TextNode)value).textValue(///'1234///') 来修改属性的值为 1234。最后,我们将修改后的 JsonNode 对象转换回 JSON 字符串并打印输出。//n//n希望对你有所帮助!/
原文地址: https://www.cveoy.top/t/topic/pSyu 著作权归作者所有。请勿转载和采集!