赞
踩
JSON 路径表示法(JSON Path)是一种用于在 JSON 数据中定位和访问特定值的表达式语言。它类似于 XPath 对于 XML 数据的作用。
GitHub - json-path/JsonPath: Java JsonPath implementation
$
:表示根节点。.
:表示当前节点。..
:表示递归下降,用于匹配任意层级的节点。*
:表示通配符,匹配任意名称的节点。[]
:用于索引和过滤节点。[,]
:用于多个索引或过滤条件。[start:end:step]
:用于切片操作,类似于 Python 中的切片语法。json数据
- {
- "store": {
- "book": [
- {
- "title": "Sayings of the Century",
- "price": 8.95
- },
- {
- "title": "Sword of Honour",
- "price": 12.99
- },
- {
- "title": "Moby Dick",
- "price": 8.99
- },
- {
- "title": "The Lord of the Rings",
- "price": 22.99
- }
- ],
- "bicycle": {
- "color": "red",
- "price": 19.95
- }
- },
- "expensive": 10
- }

使用方法pom引入jar
- <dependency>
- <groupId>com.jayway.jsonpath</groupId>
- <artifactId>json-path</artifactId>
- <version>2.6.0</version>
- </dependency>
- @Test
- public void jsonPath() {
- String json = "{" +
- "\"data\":[" +
- "{\"name\":\"John\",\"phone\":\"1234567890\"}," +
- "{\"name\":\"Jane\",\"phone\":\"9876543210\"}" +
- "]," +
- "\"user\":{" +
- "\"name\":\"lizz\"" +
- "}," +
- "\"code\":\"123\"" +
- "}";
-
- // 解析 JSON
- Object document = Configuration.defaultConfiguration().jsonProvider().parse(json);
-
- // 当前节点下的code节点
- String path = "$.code";
- Object result = JsonPath.read(document, path);
- System.out.println(result);
- // 所有节点
- path = "$..*";
- result = JsonPath.read(document, path);
- System.out.println(JSON.toJSONString(result));
-
- // 执行data节点中所有phone节点
- path = " $.data[*].phone";
- result = JsonPath.read(document, path);
- System.out.println(result);
-
- // 执行data节点中index为1对象中的phone节点
- path = "$.data[0].phone";
- result = JsonPath.read(document, path);
- System.out.println(result);
-
-
- // 执行data节点中所有phone节点
- path = " $.data[-1].phone";
- result = JsonPath.read(document, path);
- System.out.println(result);
- }

结果
- - Evaluating path: $['code']
- 123
-
- - Evaluating path: $..[*]
- [[{"name":"John","phone":"1234567890"},{"name":"Jane","phone":"9876543210"}],{"name":"lizz"},"123",{"$ref":"$[0][0]"},{"$ref":"$[0][1]"},"John","1234567890","Jane","9876543210","lizz"]
-
- - Evaluating path: $['data'][*]['phone']
- ["1234567890","9876543210"]
-
- - Evaluating path: $['data'][0]['phone']
- 1234567890
-
- - Evaluating path: $['data'][-1]['phone']
- 9876543210
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。