Fastjson JSONPath 用法
FastJSON 是阿里巴巴开源的一个高性能的 JSON 处理库,它也支持 JSONPath 语法,允许你通过 JSONPath 表达式在 JSON 数据中快速定位和提取特定的数据。以下是阿里 FastJSON 中 JSONPath 的常见用法及示例:
1. 添加依赖
如果你使用的是 Maven 项目,在 pom.xml
中添加 FastJSON 的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.33</version>
</dependency>
2. 基本用法示例
示例 JSON 数据
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
2.1 获取单个节点的值
可以使用 JSONPath.eval
方法根据 JSONPath 表达式获取单个节点的值。例如,获取 store.bicycle.color
的值:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
public class FastJsonPathExample {
public static void main(String[] args) {
String jsonStr = "{...}"; // 上述示例 JSON 数据
JSONObject jsonObject = JSON.parseObject(jsonStr);
// 获取 store.bicycle.color 的值
Object color = JSONPath.eval(jsonObject, "$.store.bicycle.color");
System.out.println("Bicycle color: " + color);
}
}
2.2 获取数组中的元素
可以通过索引获取数组中的特定元素。例如,获取 store.book
数组中的第一个元素:
// 获取 store.book 数组中的第一个元素
Object firstBook = JSONPath.eval(jsonObject, "$.store.book[0]");
System.out.println("First book: " + firstBook);
2.3 过滤数组元素
使用过滤表达式筛选数组中的元素。例如,获取价格低于 expensive
值的书籍:
// 获取价格低于 expensive 值的书籍
Object cheapBooks = JSONPath.eval(jsonObject, "$.store.book[?(@.price < $.expensive)]");
System.out.println("Cheap books: " + cheapBooks);
2.4 递归查找
使用递归通配符 ..
可以递归查找所有匹配的节点。例如,查找所有 author
字段的值:
// 查找所有 author 字段的值
Object allAuthors = JSONPath.eval(jsonObject, "$..author");
System.out.println("All authors: " + allAuthors);
3. 修改 JSON 数据
FastJSON 的 JSONPath 还支持修改 JSON 数据。例如,将 store.bicycle.color
的值修改为 blue
:
// 修改 store.bicycle.color 的值为 blue
JSONPath.set(jsonObject, "$.store.bicycle.color", "blue");
System.out.println("Modified JSON: " + jsonObject.toJSONString());
4. 总结
FastJSON 的 JSONPath 功能提供了强大而灵活的方式来处理 JSON 数据。通过使用不同的 JSONPath 表达式,你可以方便地定位、提取和修改 JSON 数据中的特定部分。在实际应用中,根据具体的 JSON 结构和需求,合理运用这些功能可以提高开发效率。需要注意的是,虽然 FastJSON 功能强大,但在使用时要关注其安全性,特别是在处理不可信的输入时。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性