java json path_Java使用JSONPath解析JSON完整内容详解
JsonPath是一种简单的方法来提取给定JSON文档的部分内容。 JsonPath有许多编程语言,如Javascript,Python和PHP,Java。
JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容。
maven中添加jar包
JsonPath可在Central Maven存储库中找到。 Maven用户将其添加到您的POM。
com.jayway.jsonpath json-path 2.2.0
操作符
操作
说明
$
表示根元素
@
当前元素
. or []
子元素
n/a
父元素
*
通配符,表示所有的元素
. .
选择所有符合条件的节点
[]
迭代器标示,如数组下标
[,]
连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。
[start?step]
数组切片操作
?()
过滤表达式
()
支持表达式计算
函数
函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的。
函数
描述
输出
min()
提供数字数组的最小值
Double
max()
提供数字数组的最大值
Double
avg()
提供数字数组的平均值
Double
stddev()
提供数字数组的标准偏差值
Double
length()
提供数组的长度
Integer
过滤器运算符
过滤器是用于筛选数组的逻辑表达式。一个典型的过滤器将是[?(@.age > 18)],其中@表示正在处理的当前项目。 可以使用逻辑运算符&&和||创建更复杂的过滤器。 字符串文字必须用单引号或双引号括起来([?(@.color == ‘blue')] 或者 [?(@.color == “blue”)]).
操作符
描述
==
left等于right(注意1不等于'1')
!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
=~
匹配正则表达式[?(@.name =~ /foo.*?/i)]
in
左边存在于右边 [?(@.size in [‘S', ‘M'])]
nin
左边不存在于右边
size
(数组或字符串)长度
empty
(数组或字符串)为空
Java操作示例
json格式的数据:
{
"text": "张三",
"expensive": 6,
"body": {
"rvNoNum": 23,
"rvNoRecords": [{
"score": 4,
"rvAddress": "2",
"consignments": null
}, {
"score": 8,
"rvAddress": "3",
"consignments": null
}]
}
}
测试代码:
private static void jsonPathTest() {
JSONObject responseJson= jsonTest();//调用自定义的jsonTest()方法获得json对象,生成上面的json
//输出text的值
String text = JsonPath.read(responseJson,"$.text");
//输出rvNoNum的值
int rvNoNum = JsonPath.read(responseString,"$.body.rvNoNum");
//输出rvNoRecords数组的第2个值
List rvNoRecords = JsonPath.read(responseString,"$..rvNoRecords[1]");
//输出rvNoRecords数组的第1和第2个值
List rvNoRecords1 = JsonPath.read(responseString,"$..rvNoRecords[0,1]");
//输出rvNoRecords数组中score<=expensive的所有值
List rvNoRecords2 = JsonPath.read(responseString,"$..rvNoRecords[?(@.score < $['expensive'])]");
//输出rvNoRecords[0]的rvAddress值
String rvAddress1 = JsonPath.read(responseJson, "$.body.rvNoRecords[0].rvAddress");
//输出全部rvAddress的值,使用Iterator迭代
List rvAddress = JsonPath.read(responseJson,"$.body.rvNoRecords[*].rvAddress");
//输出rvNoRecords[*]中rvAddress== '2'的rvNoRecords
List rvAddress2 = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.rvAddress == 2)]");
//输出rvNoRecords[*]中score>5 的rvNoRecords
List score = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.score>5)]");
//输出rvNoRecords[*]中含有consignments元素的rvNoRecords
List consignments = JsonPath.read(responseString,"$.body.rvNoRecords[?(@.consignments)]");
//输出该json中所有rvAddress的值
List rvNoNum2 = JsonPath.read(responseString,"$..rvAddress");
//输出rvNoRecords数组的长度
List length = JsonPath.read(responseString,"$..rvNoRecords.length()");
//可以提前编辑一个路径,并多次使用它
JsonPath path = JsonPath.compile("$.body.rvNoRecords[*]");
List rvNoRecords3 = path.read(responseString);
}
到此这篇关于使用 JSONPath 解析 JSON 完整内容详解的文章就介绍到这了,更多相关使用 JSONPath 解析 JSON 完整内容详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
时间: 2020-03-22
java json path_Java使用JSONPath解析JSON完整内容详解相关推荐
- 使用 JSONPath 解析 JSON 完整内容详解
JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大 ...
- JSONPath 解析 JSON 内容详解(翻译自 github)
Github :https://github.com/json-path/JsonPath http://www.ibloger.net/article/2329.html JSONPath Onli ...
- JSONPath 解析 JSON 内容详解(自 github)
Github :https://github.com/json-path/JsonPath http://www.ibloger.net/article/2329.html JSONPath Onli ...
- jsonpath - 使用 JSONPath 解析 JSON
JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容. JsonPa ...
- 使用jsonpath解析json内容
JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容.下面我把官网介绍的每个表达式用代码实现,可以更直观的知道该怎么用它. 一.首先需要 ...
- 使用 JSONPath 解析 JSON内容 详细
JSONPath的介绍: JsonPath 是一种简单的方法来提取给定JSON文档的部分内容. JsonPath表达式总是以与XPath表达式结合使用XML文档相同的方式引用JSON结构. JsonP ...
- 【PI应用】用Java查询雅虎天气并解析Json数据
这篇文章是"树莓派查询天气,通过串口彩屏/7219点阵实时显示"的一部分,主要介绍使用Java查询雅虎天气并解析Json返回数据,这里只是将获得的实时天气.未来十天的天气等信息,解 ...
- c#解析json字符串数组_C#解析JSON字符串总结
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...
- android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】
本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...
最新文章
- 商汤科技宣布C轮战略融资6亿美元 阿里领投苏宁跟投
- @ngrx/router-store 在 SAP 电商云 Spartacus UI 开发中的作用
- The Preliminary Contest for ICPC Asia Nanjing 2019 B. super_log (广义欧拉降幂)
- express 路由中间件_Express通过示例进行解释-安装,路由,中间件等
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(包管理和环境管理)
- 遗留问题,排雷会炸,不排也会炸!
- mac微软雅黑字体_“微软雅黑”有坑,小编向你推荐免费的开源字体
- find命令过滤 no such_Linux中find命令的用法入门
- ArcGIS for Android 100.3的学习与应用(三) 实现地图添加自定义指北针
- SAS-配对设计资料秩和检验
- AIDA64内存与缓存测试过了算稳定吗_【AMD R52600X】装机实录、基本特性介绍及性能测试...
- mediatek无线网卡驱动 linux,MediaTek 高速USB网卡驱动适配
- 2020-12-19 nn.CrossEntropyLoss()
- Colibri 片段化学空间的兴起
- 如何在 JIRA 中创建自己的仪表板(Dashboard)
- iOS 自定义转场动画篇
- 汉字转拼音 - 输入汉字获取其拼音
- PAT 1051 复数乘法
- SQL注入之字符型注入练习(pikachu)
- 最近这只狗狗,真的很忙