介绍
这篇文章将为大家详细讲解有关怎么在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