怎么在Java中使用JSONPath对JSON进行解析

  介绍

这篇文章将为大家详细讲解有关怎么在Java中使用JSONPath对JSON进行解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

JSONPath提供的JSON解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的JSON内容。

<强> maven中添加jar包

JSONPath可在中央maven存储库中找到。maven用户将其添加到您的POM。

com.jayway。jsonpath json-path 2.2.0

<强>操作符

操作说美元明表示根元素@当前元素。或[]子元素n/a父元素*通配符,表示所有的元素。选择所有符合条件的节点[]迭代器标示,如数组下标[,]连接操作符在XPath结果合并其它结点集合.JSONP允许名称或者数组索引。[开始?一步]数组切片操作?()过滤表达式()支持表达式计算

<强>函数

函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的。

函数描述输出min()提供数字数组的最小值Doublemax()提供数字数组的最大值Doubleavg()提供数字数组的平均值Doublestddev()提供数字数组的标准偏差值Doublelength()提供数组的长度整数

<>强过滤器运算符

过滤器是用于筛选数组的逻辑表达式。一个典型的过滤器将是[? (@。年龄比;18)],其中@表示正在处理的当前项目。可以使用逻辑运算符和,和| |创建更复杂的过滤器。字符串文字必须用单引号或双引号括起来([? (@。颜色=='蓝# 39;)或者[? (@。颜色==袄渡?])。

操作符描述==左等于正确的(注意1不等于& # 39;1 & # 39;)!=不等于& lt;小于& lt;=小于等于祝辞大于祝辞=大于等于=~匹配正则表达式[? (@.name=~/foo . * ?/i)]在左边存在于右边(? (@。大小(& # 39;,猴# 39;])]nin左边不存在于右边大小(数组或字符串)长度空(数组或字符串)为空

<强> Java操作示例

json格式的数据:

{   “text":“张三“,   “expensive": 6,   “body": {   “rvNoNum": 23日,   “rvNoRecords": [{   “score": 4   “rvAddress":“2“,   “consignments":零   },{   “score": 8   “rvAddress":“3“,   “consignments":零   })   }   }

测试代码:

private  static  void  jsonPathTest (), {   ,JSONObject  responseJson=, jsonTest();//调用自定义的jsonTest()方法获得json对象,生成上面的json   ,//输出文本的值   ,String  text =, JsonPath.read (responseJson,“.text"美元);   ,   ,//输出rvNoNum的值   ,int  rvNoNum =, JsonPath.read (responseString,“.body.rvNoNum"美元);//输出rvNoRecords数组的第2个值   List rvNoRecords1 =, JsonPath.read (responseString,“$ . . rvNoRecords [0, 1]“);//输出rvNoRecords数组中score<=昂贵的所有值   List rvAddress =, JsonPath.read (responseJson,“美元.body.rvNoRecords [*] .rvAddress");   ,   ,//输出rvNoRecords[*]中rvAddress==, & # 39; 2 & # 39;的rvNoRecords   ,List rvAddress2 =, JsonPath.read (responseJson,“美元.body.rvNoRecords [? (==@.rvAddress  2)]“),,,   ,   ,//输出rvNoRecords[*]中score> 5,的rvNoRecords   ,List score =, JsonPath.read (responseJson,“美元.body.rvNoRecords [? (@.score> 5)]“);   ,   ,//输出rvNoRecords[*]中含有货物元素的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);   }

怎么在Java中使用JSONPath对JSON进行解析

Copyright © 2020-2023 feiqueyun.cn. All Rights Reserved. 肥雀云_南京肥雀信息技术有限公司版权所有 南京肥雀信息技术有限公司 苏ICP备16063723号-5