赞
踩
Java方法实现以data.info.author.name,value
格式做传入参数读取json深层次的信息,而不用一级一级地去遍历Json对象。
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; public static String getValueByPath(JSONObject json, String path) { if (json == null || path == null) { return null; } String[] keys = path.split("\\."); JSONObject currentNode = json; for (String key : keys) { if (currentNode.containsKey(key)) { Object value = currentNode.get(key); if (value instanceof JSONObject) { currentNode = (JSONObject) value; } else { // 当遇到非JSONObject时,返回当前层级的值 return value.toString(); } } else { // 如果路径中的key不存在,则返回null return null; } } // 返回最深层次的值 return JSON.toJSONString(currentNode); }
这个方法中传参的json是使用com.alibaba.fastjson
解析后的JSON对象,不是字符串:
JSONObject json= JSON.parseObject(jsonStr);
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.9.graal</version>
</dependency>
Alibaba Fastjson 是一款由阿里巴巴集团开发的高性能、功能全面的 Java 语言编写的 JSON 处理工具包。Fastjson
主要功能包括:
序列化(Serialization):能够将 Java 对象转换成 JSON 字符串,支持将 Java Bean、Collection 类型的数据结构及其他常见类型转换为符合 JSON 格式规范的字符串。
反序列化(Deserialization):将 JSON 字符串还原为 Java 对象,即从 JSON 文本中解析出对应的 Java Bean 或数组、集合等对象。
高性能:Fastjson 以其高效的内存管理和独特的算法著称,声称在 JSON 解析和生成方面的性能优于其他大部分 Java JSON 库。它采用了诸如“假定有序快速匹配”等技术优化解析性能。
轻量级:Fastjson 体积小巧,易于集成到项目中,对资源占用较低,适合于高并发和大数据量的场景。
假设有一json字符串是这样的多级结构:
使用本方法获取的示例代码是:
public class UtilsTest {
// 使用示例
public static void main(String[] args) {
String jsonStr = "{\"data\":{\"info\":{\"author\":{\"name\":{\"value\":\"Kelvin,Welcome to 1024!\"}}}}}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
String value = FileUtils.getValueByPath(jsonObject, "data.info.author.name.value");
System.out.println("Get INFO: " + value); // 输出GET INFO: Kelvin,Welcome to 1024!
}
}
可以使用多级点连接查询到正确结果了,这特别适合与深度嵌套的json数据获取。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。