湖州企业做网站,自治区建设厅官方网站,知名网站建设多少钱,上海有名公司有哪些目录
1. 工具类的功能设计
2. 工具类的实现
依赖配置
工具类代码
3. 工具类的使用示例
示例1#xff1a;美化JSON打印
示例2#xff1a;从JSON中提取数据
示例3#xff1a;修改JSON数据
示例4#xff1a;合并JSON对象
4. 总结 在现代软件开发中#xff0c;JSON美化JSON打印
示例2从JSON中提取数据
示例3修改JSON数据
示例4合并JSON对象
4. 总结 在现代软件开发中JSONJavaScript Object Notation是一种广泛使用的轻量级数据交换格式。由于其简洁性和易读性JSON被广泛应用于API通信、配置文件、数据存储等场景。然而在处理JSON数据时我们常常会遇到以下问题
JSON打印不美观默认的JSON字符串通常是紧凑的不易阅读。数据处理繁琐从JSON中提取或修改数据时代码冗长且容易出错。 为了解决这些问题我们可以编写一个工具类优化JSON对象的打印和数据处理。本文将详细介绍如何实现这样一个工具类并提供示例代码。 1. 工具类的功能设计
我们的工具类JsonUtils将提供以下功能
美化JSON打印将JSON字符串格式化为易读的多行格式。从JSON中提取数据通过路径如user.name从JSON对象中提取值。修改JSON数据通过路径修改JSON对象中的值。合并JSON对象将多个JSON对象合并为一个。 2. 工具类的实现
依赖配置
首先我们需要引入Jackson库它是一个流行的JSON处理库。在Maven项目中添加以下依赖
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.13.3/version
/dependency工具类代码
以下是JsonUtils工具类的实现
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
public class JsonUtils {private static final ObjectMapper mapper new ObjectMapper();/*** 将JSON字符串格式化为易读的多行格式*/public static String prettyPrint(String json) throws JsonProcessingException {JsonNode node mapper.readTree(json);return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(node);}/*** 从JSON对象中提取值** param json JSON字符串* param path 路径如 user.name* return 提取的值如果路径不存在则返回null*/public static String getValue(String json, String path) throws JsonProcessingException {JsonNode node mapper.readTree(json);String[] keys path.split(\\.);for (String key : keys) {if (node null || !node.has(key)) {return null;}node node.get(key);}return node.asText();}/*** 修改JSON对象中的值** param json JSON字符串* param path 路径如 user.name* param value 新值* return 修改后的JSON字符串*/public static String setValue(String json, String path, String value) throws JsonProcessingException {ObjectNode node (ObjectNode) mapper.readTree(json);String[] keys path.split(\\.);ObjectNode current node;for (int i 0; i keys.length - 1; i) {if (!current.has(keys[i])) {current.putObject(keys[i]);}current (ObjectNode) current.get(keys[i]);}current.put(keys[keys.length - 1], value);return mapper.writeValueAsString(node);}/*** 合并两个JSON对象** param json1 第一个JSON字符串* param json2 第二个JSON字符串* return 合并后的JSON字符串*/public static String merge(String json1, String json2) throws JsonProcessingException {ObjectNode node1 (ObjectNode) mapper.readTree(json1);ObjectNode node2 (ObjectNode) mapper.readTree(json2);node1.setAll(node2);return mapper.writeValueAsString(node1);}
}3. 工具类的使用示例
示例1美化JSON打印
public class JsonUtilsExample {public static void main(String[] args) throws JsonProcessingException {String json {\name\:\John\,\age\:30,\address\:{\city\:\New York\,\zip\:\10001\}};String prettyJson JsonUtils.prettyPrint(json);System.out.println(prettyJson);}
}输出
{name : John,age : 30,address : {city : New York,zip : 10001}
}示例2从JSON中提取数据
public class JsonUtilsExample {public static void main(String[] args) throws JsonProcessingException {String json {\name\:\John\,\age\:30,\address\:{\city\:\New York\,\zip\:\10001\}};String city JsonUtils.getValue(json, address.city);System.out.println(City: city); // 输出City: New York}
}示例3修改JSON数据
public class JsonUtilsExample {public static void main(String[] args) throws JsonProcessingException {String json {\name\:\John\,\age\:30,\address\:{\city\:\New York\,\zip\:\10001\}};String updatedJson JsonUtils.setValue(json, address.city, Los Angeles);System.out.println(updatedJson);}
}输出
{name:John,age:30,address:{city:Los Angeles,zip:10001}}示例4合并JSON对象
public class JsonUtilsExample {public static void main(String[] args) throws JsonProcessingException {String json1 {\name\:\John\,\age\:30};String json2 {\address\:{\city\:\New York\,\zip\:\10001\}};String mergedJson JsonUtils.merge(json1, json2);System.out.println(mergedJson);}
}输出
{name:John,age:30,address:{city:New York,zip:10001}}4. 总结
通过实现JsonUtils工具类我们可以轻松地优化JSON对象的打印和数据处理。该工具类提供了以下功能
美化JSON打印使JSON字符串更易读。提取数据通过路径从JSON对象中提取值。修改数据通过路径修改JSON对象中的值。合并JSON对象将多个JSON对象合并为一个。 这些功能可以显著提高开发效率减少代码冗余。希望本文对您有所帮助
注该工具类只是一个简单的demo具体工具类的使用需要根据开发者的实际需求进行改造升级