https://github.com/alibaba/fastjson/wiki/JSONPath
1. JSONPath介绍
fastjson 1.2.0之后的版本支持JSONPath。这是一个很强大的功能,可以在java框架中当作对象查询语言(OQL)来使用。
2. API
建议缓存JSONPath对象,这样能够提高求值的性能。
3. 支持语法
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'] |
以下两种写法的语义是相同的:
和
4. 语法示例
JSONPath | 语义 |
$ | 根对象 |
$[-1] | 最后元素 |
$[:-2] | 第1个至倒数第2个 |
$[1:] | 第2个之后所有元素 |
$[1,2,3] | 集合中1,2,3个元素 |
5. API 示例
5.1 例1
5.2 例2
读取集合多个元素的某个属性
5.3 例3
返回集合中多个元素
5.4 例4
按范围返回集合的子集
5.5 例5
通过条件过滤,返回集合的子集
5.6 例6
根据属性值过滤条件判断是否返回对象,修改对象,数组属性添加元素
5.7 例7
5.8 例8 keySet
使用keySet抽取对象的属性名,null值属性的名字并不包含在keySet结果中,使用时需要注意,详细可参考示例。
相关推荐
在Java开发中,处理JSON数据是一项常见的任务,而Fastjson是一个高效的JSON库,它提供了JSONPath功能,使得处理复杂的JSON数据变得更为便捷。JSONPath类似于XPath,是用于JSON数据的一种查询语言,允许开发者以...
2. **JSONPath支持**:类似XPath用于XML,Fastjson支持JSONPath表达式来查询和修改JSON对象。 3. **安全模式**:为避免JSON注入攻击,Fastjson提供安全模式,限制某些可能导致安全问题的操作。 五、应用场景 1. **...
8. JSONPath支持:Fastjson还支持JSONPath表达式,用于从复杂的JSON结构中查询数据。例如: ```java String address = jsonObject.getString("$..address"); ``` 9. 性能优化:Fastjson在性能上优于许多其他JSON...
fastjson-1.2.83.jar下载,fastjson是阿里巴巴的开源JSON解析库,可以解析JSON...5. 支持JSONPath:fastjson支持JSONPath表达式查询。 6. 支持注解:fastjson支持多种注解配置JSON序列化和反序列化。 7. 支持携带格式:f
2. **JSONPath 支持**: Fastjson 支持 JSONPath,一种类似于 XPath 的查询语言,用于在 JSON 文档中选取数据。这使得开发者能够更方便地提取 JSON 数据。 3. **流式处理**: 除了传统的基于内存的解析方式,Fastjson...
2. **JSONPath支持**:Fastjson支持JSONPath表达式,这是一种类似于XPath的查询语言,用于在JSON文档中查找和操作数据,极大地提高了数据提取的便利性。 3. **日期时间处理**:Fastjson提供了多种日期时间格式化...
4. 支持JSONPath:类似于XPath对于XML的支持,Fastjson支持JSONPath语法,方便查询JSON数据。 5. JSON Streaming API:对于大数据量的处理,Fastjson提供了流式API,可以有效地减少内存消耗。 三、Fastjson使用示例...
3. JSONPath支持:Fastjson支持JSONPath,这是一种查询JSON数据的路径表达式,类似于XPath在XML中的作用。通过JSONPath,我们可以方便地从复杂的JSON结构中提取所需数据。 4. 高性能:Fastjson在设计时就考虑到了...
- **JSONPath支持**:Fastjson实现了JSONPath,一种类似于XPath的查询语言,可用于从JSON对象中提取数据。 - **JSON-RPC支持**:Fastjson也支持JSON-RPC协议,简化了基于JSON的远程调用。 总的来说,Fastjson ...
- **JSONPath支持**:Fastjson支持JSONPath,这是一种类似XPath的查询语言,用于从JSON文档中选取数据。 - **安全性**:Fastjson具有防止JSON注入的安全特性,可以有效避免因JSON反序列化导致的安全问题。 **2. ...
此外,Fastjson还支持JSONPath表达式,用于在JSON对象中进行查询和操作,类似于XPath在XML中的作用。 **2. fastjson-1.2.38-sources.jar - 源代码包** 源码包对于开发者来说是极其宝贵的资源,它允许开发者查看并...
《深入理解Fastjson:阿里巴巴的高效JSON库》 在当今的软件开发中,JSON作为一种轻量级的数据交换格式,被广泛应用于服务器与客户端之间的数据传输。而Fastjson,由阿里巴巴公司开发,是一款性能优秀且易用的Java...
3. 功能全面:除了基础的解析和序列化,Fastjson还支持JSONPath(类似CSS选择器的JSON查询方式)、JSON Schema验证、日期格式化、自定义类型转换等高级特性。 4. 支持Java集合和JavaBean:Fastjson可以直接将JSON...
它支持JSONPath,一种类似于XPath的查询语言,可以方便地对JSON数据进行深度查找和修改。此外,FastJson还支持JSON Schema,用于验证JSON数据的结构是否符合预设规范,确保数据的准确性和一致性。 FastJsonJar在...
5. JSONPath支持:Fastjson提供了对JSONPath的支持,这使得在JSON对象中查找和提取数据变得非常方便,类似于XPath在XML中的作用。 6. 安全性:Fastjson在设计时考虑了安全性,提供了避免反射攻击的措施,比如启用`...
3. **JSONPath**:类似XPath用于XML查询,Fastjson的JSONPath可以方便地查询JSON对象中的特定字段,如`String name = JSONPath.eval(json, "$.user.name");` 4. **类型转换**:Fastjson支持自动类型转换,可以将...
4. **JSONPath**:Fastjson支持JSONPath表达式,方便查询和修改JSON对象。 5. **流式解析**:对于大数据量的JSON处理,Fastjson提供流式解析API,降低内存消耗。 6. **JSON Schema验证**:Fastjson可结合其他库...
String name = FastJson.jsonPath(jsonString, "$.users[0].name"); ``` 2. 自定义类型处理器: ```java FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeature(SerializerFeature....
1. JSONPath:Fastjson支持JSONPath表达式,允许开发者通过类似XPath的方式查询JSON数据,增强了数据提取的灵活性。 2. JSON Streaming API:Fastjson提供了流式API,适合处理大数据量的场景,避免一次性加载整个...
1. JSON转XML:Fastjson提供了`JSONPath.toXMLString(JSONArray jsonArray)`和`JSONPath.toXMLString(JSONObject jsonObject)`方法,可以将JSON数组或JSON对象转换为XML字符串。 2. XML转JSON:虽然Fastjson官方API...