JSONPath 解析 JSON
2023-09-11 14:15:40 时间
01 引言
JsonPath
是一种简单的方法来提取给定JSON
文档的部分内容。 JsonPath
有许多编程语言,如Javascript
,Python
和PHP
,Java
。
JsonPath
提供的json
解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json
内容。下面我把官网介绍的每个表达式用代码实现,可以更直观的知道该怎么用它。
GitHub:https://github.com/json-path/JsonPath
02 JSONPath
JsonPath可在Central Maven存储库中找到。 Maven用户将其添加到您的POM。
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.2.0</version>
</dependency>
JsonPath表达式总是以与XPath表达式结合使用XML文档相同的方式引用JSON结构。
JsonPath中的“根成员对象”始终称为$
,无论是对象还是数组。
JsonPath
表达式可以使用点表示法:
$.store.book [0].title
或括号表示法
$['store']['book'][0]['title']
2.1 操作符
2.2 函数
函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的。
2.3 过滤器运算符
过滤器是用于筛选数组的逻辑表达式。一个典型的过滤器将是[?(@.age > 18)]
,其中@
表示正在处理的当前项目。 可以使用逻辑运算符&&
和||
创建更复杂的过滤器。 字符串文字必须用单引号或双引号括起来([?(@.color == 'blue')] 或者 [?(@.color == "blue")]
)。
03 操作示例
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
}
String json = "...";
ReadContext ctx = JsonPath.parse(json);
List<String> authorsOfBooksWithISBN = ctx.read("$.store.book[?(@.isbn)].author");
List<Map<String, Object>> expensiveBooks = JsonPath
.using(configuration)
.parse(json)
.read("$.store.book[?(@.price > 10)]", List.class);
04 文末
相关文章
- jackson2.8.4java对象序列化成json字符串格式化时间
- Jmeter入门15 JSON Assertion 适用于json格式的响应断言
- fastjson将json字符串转化成map的五种方法
- 在JavaScript中使用json.js:访问JSON编码的某个值
- json,serialize,msgpack比较
- 序列化 配置 json json5 yaml [MD]
- Android解析JSON速度对比
- [NPM] Use package.json variables in npm scripts
- Struts2在打包json格式的懒加载异常问题
- Json string to object debug - json字符串转Java对象的处理调试
- C# Json反序列化 数据协定类型 无法反序列化 因为未找到必需的数据成员
- SAP Fiori里的manifest.json
- js 数组、对象转json 以及json转 数组、对象
- jquery json ajax