javajsonxpath_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]
数组切⽚操作
()
过滤表达式
()c语言有趣的代码
⽀持表达式计算
函数
函数可以在路径的尾部调⽤,函数的输出是路径表达式的输出,该函数的输出是由函数本⾝所决定的。
函数
输出
min()
提供数字数组的最⼩值
Double
max()
提供数字数组的最⼤值
Double
avg()
提供数字数组的平均值
Double
stddev()
提供数字数组的标准偏差值
python请求并解析json数据
Double
length()
提供数组的长度
Integer
过滤器运算符
过滤器是⽤于筛选数组的逻辑表达式。⼀个典型的过滤器将是[?(@.age > 18)],其中@表⽰正在处理的当前项⽬。 可以使⽤逻辑运算符&&和||创建更复杂的过滤器。 字符串⽂字必须⽤单引号或双引号括起来([?(@.color == ‘blue")] 或者 [?(@.color == “blue”)]).
操作符
描述
==
left等于right(注意1不等于"1")
!=
react 文档
不等于
<
⼩于
<=
⼩于等于
>
⼤于
>=
⼤于等于
匹配正则表达式[?(@.name =~ /foo.*?/i)]
in
左边存在于右边 [?(@.size in [‘S", ‘M"])]
nin
左边不存在于右边
size
(数组或字符串)长度
网页设计难学吗有技术含量吗
empty
(数组或字符串)为空
Java操作⽰例
json格式的数据:
{
"text": "张三",document怎么读音
"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 = ad(responseJson,"$.text");
//输出rvNoNum的值
int rvNoNum = ad(responseString,"$.body.rvNoNum");
//输出rvNoRecords数组的第2个值
List rvNoRecords = ad(responseString,"$..rvNoRecords[1]");
//输出rvNoRecords数组的第1和第2个值
List rvNoRecords1 = ad(responseString,"$..rvNoRecords[0,1]");
//输出rvNoRecords数组中score<=expensive的所有值
List rvNoRecords2 = ad(responseString,"$..rvNoRecords[?(@.score < $["expensive"])]");
//输出rvNoRecords[0]的rvAddress值
String rvAddress1 = ad(responseJson, "$.body.rvNoRecords[0].rvAddress");
//输出全部rvAddress的值,使⽤Iterator迭代
List rvAddress = ad(responseJson,"$.body.rvNoRecords[*].rvAddress");
/
/输出rvNoRecords[*]中rvAddress== "2"的rvNoRecords
List rvAddress2 = ad(responseJson,"$.body.rvNoRecords[?(@.rvAddress == 2)]");
//输出rvNoRecords[*]中score>5 的rvNoRecords
List score = ad(responseJson,"$.body.rvNoRecords[?(@.score>5)]");
//输出rvNoRecords[*]中含有consignments元素的rvNoRecords
List consignments = ad(responseString,"$.body.rvNoRecords[?(@.consignments)]");
//输出该json中所有rvAddress的值学生座位随机数生成器
List rvNoNum2 = ad(responseString,"$..rvAddress");
//输出rvNoRecords数组的长度
List length = ad(responseString,"$..rvNoRecords.length()");
//可以提前编辑⼀个路径,并多次使⽤它
JsonPath path = JsonPathpile("$.body.rvNoRecords[*]");
List rvNoRecords3 = ad(responseString);
}
到此这篇关于使⽤ JSONPath 解析 JSON 完整内容详解的⽂章就介绍到这了,更多相关使⽤ JSONPath 解析 JSON 完整内容详解内容请搜索云海天教程以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持云海天教程!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。