JsonPath
JsonPath
- JsonPath参照XPath解析xml的方式来解析Json
- JsonPath用符号$表示最外层对象,类似于Xpath中的根元素
- JsonPath可以通过点语法来检索数据,如:
shell $.store.book[0].title
- 也可以使用中括号[]的形式,如
shell $['store']['book'][0]['title']
运算符(Operators)
运算符说明$根元素@当前元素*通配符,可以表示任何元素..递归搜索.子节点(元素)['' (, '')]一个或者多个子节点[ (, )]一个或者多个数组下标[start:end]数组片段,区间为[start,end)[?()]过滤器表达式,其中表达式结果必须是boolean类型,如可以是比较表达式或者逻辑表达式
在pom.xml中添加Maven依赖
<dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.3.0</version> </dependency>
{ //最简单直接暴力的方式是使用JsonPath 访问read静态方法 String json = "{" + "\"lemon\":{\"teachers\":[{\"id\":\"101\",\"name\":\"诸葛\",\"addr\":\"昭君\",\"age\":25}" + ",{\"id\":\"102\",\"name\":\"赵云\",\"age\":28}" + ",{\"id\":\"103\",\"name\":\"梦琪\",\"addr\":\"上路\",\"age\":16}" + ",{\"id\":\"104\",\"name\":\"尚香\",\"addr\":\"下路\",\"age\":29}]" + ",\"salesmans\":[{\"id\":\"105\",\"name\":\"张飞\",\"age\":17}" + ",{\"id\":\"106\",\"name\":\"关羽\",\"age\":27}]}" + ",\"avg\":25}"; List<String> authors = JsonPath.read(json, "$.lemon.teachers[*].name"); log.info("authors:" + authors); } { //jsonpath还提供一些简单对象的映射,如将一个时间戳读取解析为java.util.Date对象 String json = "{\"date_as_long\" : 1411455611975}"; Date date = JsonPath.parse(json).read("$['date_as_long']", Date.class); log.info("date:" + date); } { //将jsonPath映射输出为pojo对象 String userJson = "{'id':1,'name':'happy','age':25}"; Hello user = JsonPath.parse(userJson).read("$", Hello.class); log.info("user:" + user); }
标签:
json
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2019-05-21 Fastjson 序列化与反序列化