时间:2021-05-19
介绍
fastjson 1.2.0之后的版本支持JSONPath。,可以在java框架中当作json对象查询语言(OQL)来使用。
常用API
使用
准备json内容如下:
取值操作
Object rootName = JSONPath.eval(json,"$.name");System.out.println(rootName);Object rootArr = JSONPath.eval(json,"$.arr");System.out.println(rootArr);输出:
zpl
[{"name":"zpl0","id":0},{"name":"zpl1","id":1},{"name":"zpl2","id":2},{"name":"zpl3","id":3},{"name":"zpl4","id":4}]
判断操作
// 判断有没有id>2的内容boolean isExist = JSONPath.contains(json,"$[id>0]");System.out.println(isExist);// 判断有没有id>6的内容isExist = JSONPath.contains(json,"$[id>1]");System.out.println(isExist);输出
true
false
size操作
int size = JSONPath.size(json,"$.arr");System.out.println(size);输出
5
写到这里,api和表达式不可能一一列举,所谓举一反三,表达式列举如下:
JSONPath 描述 $ 根对象,例如$.name [num] 数组访问,其中num是数字,可以是负数。例如$[0].leader.departments[-1].name [num0,num1,num2...] 数组多个元素访问,其中num是数字,可以是负数,返回数组中的多个元素。例如$[0,3,-2,5] [start:end] 数组范围访问,其中start和end是开始小表和结束下标,可以是负数,返回数组中的多个元素。例如$[0:5] [start:end :step] 数组范围访问,其中start和end是开始小表和结束下标,可以是负数;step是步长,返回数组中的多个元素。例如$[0:5:2] [?(key)] 对象属性非空过滤,例如$.departs[?(name)] [key > 123] 数值类型对象属性比较过滤,例如$.departs[id >= 123],比较操作符支持=,!=,>,>=,<,<= [key = '123'] 字符串类型对象属性比较过滤,例如$.departs[name = '123'],比较操作符支持=,!=,>,>=,<,<= [key like 'aa%'] 字符串类型like过滤,例如$.departs[name like 'sz*'],通配符只支持% 支持not like [key rlike 'regexpr'] 字符串类型正则匹配过滤,例如departs[name like 'aa(.)*'],正则语法为jdk的正则语法,支持not rlike [key in ('v0', 'v1')] IN过滤, 支持字符串和数值类型 例如:.departs[name in ('wenshao','Yako')] .departs[id not in (101,102)] [key between 234 and 456] BETWEEN过滤, 支持数值类型,支持not between 例如:.departs[id between 101 and 201].departs[id not between 101 and 201] length() 或者 size() 数组长度。例如$.values.size() 支持类型java.util.Map和java.util.Collection和数组 keySet() 获取Map的keySet或者对象的非空属性名称。例如$.val.keySet() 支持类型:Map和普通对象不支持:Collection和数组(返回null) . 属性访问,例如$.name .. deepScan属性访问,例如$..name
对象的所有属性,例如$.leader.*
['key'] | 属性访问。例如['name']['key0','key1'] 多个属性访问。例如['id','name']
更多内容可参考github官网:https://github.com/alibaba/fastjson/wiki/JSONPath
到此这篇关于使用fastjson中的JSONPath处理json数据的方法的文章就介绍到这了,更多相关JSONPath处理json数据内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
JSON使用阿里的fastJson为依赖包gradle依赖管理如下:compilegroup:'com.alibaba',name:'fastjson',ver
个人使用比较习惯的json框架是fastjson,所以springboot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行js
JsonPath是一种简单的方法来提取给定JSON文档的部分内容。JsonPath有许多编程语言,如Javascript,Python和PHP,Java。Jso
最近在研究springboot实现FastJson解析json数据的方法,那么今天也算个学习笔记吧!添加jar包:com.alibabafastjson1.2.
Scala解析Json字符串的实例详解1.添加相应依赖Json解析工具使用的json-smart,曾经对比过Java的fastjson、gson。Scala的j