`

fastjson JSONPATH

    博客分类:
  • java
 
阅读更多

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结果中,使用时需要注意,详细可参考示例。

 
分享到:
评论

相关推荐

    使用fastjson中的JSONPath处理json数据的方法

    在Java开发中,处理JSON数据是一项常见的任务,而Fastjson是一个高效的JSON库,它提供了JSONPath功能,使得处理复杂的JSON数据变得更为便捷。JSONPath类似于XPath,是用于JSON数据的一种查询语言,允许开发者以...

    fastjson该包实现了部分JSON的快速提取

    2. **JSONPath支持**:类似XPath用于XML,Fastjson支持JSONPath表达式来查询和修改JSON对象。 3. **安全模式**:为避免JSON注入攻击,Fastjson提供安全模式,限制某些可能导致安全问题的操作。 五、应用场景 1. **...

    fastjson-1.2.83.jar下载

    fastjson-1.2.83.jar下载,fastjson是阿里巴巴的开源JSON解析库,可以解析JSON...5. 支持JSONPath:fastjson支持JSONPath表达式查询。 6. 支持注解:fastjson支持多种注解配置JSON序列化和反序列化。 7. 支持携带格式:f

    fastjson-1.2.9.jar.zip

    2. **JSONPath 支持**: Fastjson 支持 JSONPath,一种类似于 XPath 的查询语言,用于在 JSON 文档中选取数据。这使得开发者能够更方便地提取 JSON 数据。 3. **流式处理**: 除了传统的基于内存的解析方式,Fastjson...

    fastjson-1.2.9

    2. **JSONPath支持**:Fastjson支持JSONPath表达式,这是一种类似于XPath的查询语言,用于在JSON文档中查找和操作数据,极大地提高了数据提取的便利性。 3. **日期时间处理**:Fastjson提供了多种日期时间格式化...

    alibaba的fastjson依赖的jar包

    3. JSONPath支持:Fastjson支持JSONPath,这是一种查询JSON数据的路径表达式,类似于XPath在XML中的作用。通过JSONPath,我们可以方便地从复杂的JSON结构中提取所需数据。 4. 高性能:Fastjson在设计时就考虑到了...

    fastjson-1.2.2-jar包+源码

    4. 支持JSONPath:类似于XPath对于XML的支持,Fastjson支持JSONPath语法,方便查询JSON数据。 5. JSON Streaming API:对于大数据量的处理,Fastjson提供了流式API,可以有效地减少内存消耗。 三、Fastjson使用示例...

    fastjson-1.2.66_fastjson-1.2.66.jar_Fastjson_

    - **JSONPath支持**:Fastjson实现了JSONPath,一种类似于XPath的查询语言,可用于从JSON对象中提取数据。 - **JSON-RPC支持**:Fastjson也支持JSON-RPC协议,简化了基于JSON的远程调用。 总的来说,Fastjson ...

    fastjson Json解析

    - **JSONPath支持**:Fastjson支持JSONPath,这是一种类似XPath的查询语言,用于从JSON文档中选取数据。 - **安全性**:Fastjson具有防止JSON注入的安全特性,可以有效避免因JSON反序列化导致的安全问题。 **2. ...

    fastjson-1.2.38的官方jar包合集【fastjson-1.2.38.jar,fastjson-1.2.38-sources.jar】

    此外,Fastjson还支持JSONPath表达式,用于在JSON对象中进行查询和操作,类似于XPath在XML中的作用。 **2. fastjson-1.2.38-sources.jar - 源代码包** 源码包对于开发者来说是极其宝贵的资源,它允许开发者查看并...

    Alibaba Fastjson Jar包.zip

    3. 功能全面:除了基础的解析和序列化,Fastjson还支持JSONPath(类似CSS选择器的JSON查询方式)、JSON Schema验证、日期格式化、自定义类型转换等高级特性。 4. 支持Java集合和JavaBean:Fastjson可以直接将JSON...

    FastJsonJar

    它支持JSONPath,一种类似于XPath的查询语言,可以方便地对JSON数据进行深度查找和修改。此外,FastJson还支持JSON Schema,用于验证JSON数据的结构是否符合预设规范,确保数据的准确性和一致性。 FastJsonJar在...

    fastjson.jar包资源

    5. JSONPath支持:Fastjson提供了对JSONPath的支持,这使得在JSON对象中查找和提取数据变得非常方便,类似于XPath在XML中的作用。 6. 安全性:Fastjson在设计时考虑了安全性,提供了避免反射攻击的措施,比如启用`...

    阿里开源项目fastjson

    3. **JSONPath**:类似XPath用于XML查询,Fastjson的JSONPath可以方便地查询JSON对象中的特定字段,如`String name = JSONPath.eval(json, "$.user.name");` 4. **类型转换**:Fastjson支持自动类型转换,可以将...

    fastjson各版本jar包以及使用方法

    4. **JSONPath**:Fastjson支持JSONPath表达式,方便查询和修改JSON对象。 5. **流式解析**:对于大数据量的JSON处理,Fastjson提供流式解析API,降低内存消耗。 6. **JSON Schema验证**:Fastjson可结合其他库...

    FastJson.jar.rar

    String name = FastJson.jsonPath(jsonString, "$.users[0].name"); ``` 2. 自定义类型处理器: ```java FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeature(SerializerFeature....

    fastjson-master源码

    1. JSONPath:Fastjson支持JSONPath表达式,允许开发者通过类似XPath的方式查询JSON数据,增强了数据提取的灵活性。 2. JSON Streaming API:Fastjson提供了流式API,适合处理大数据量的场景,避免一次性加载整个...

    fastjson-1.2.58.rar

    1. JSON转XML:Fastjson提供了`JSONPath.toXMLString(JSONArray jsonArray)`和`JSONPath.toXMLString(JSONObject jsonObject)`方法,可以将JSON数组或JSON对象转换为XML字符串。 2. XML转JSON:虽然Fastjson官方API...

    阿里fastjson.jar

    4. JSONPath支持:Fastjson实现了JSONPath表达式,用于查询JSON对象中的特定数据,类似于XPath在XML中的作用。 5. Java Bean支持:Fastjson可以自动映射JSON到Java Bean,反之亦然,极大地简化了数据绑定的过程。 ...

    fastjson jar

    6. **功能丰富**:除了基本的序列化和反序列化,Fastjson还支持JSONPath(类似XPath但用于JSON)查询,JSON到XML的转换,以及JSON格式的校验等功能。 使用Fastjson的基本步骤如下: 1. 添加依赖:在Maven项目中,...

Global site tag (gtag.js) - Google Analytics