高性能 Jsonpath 框架,Snack3 3.2.35 发布


Snack3,一个高性能的 JsonPath 框架

借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。

  • 强调文档树的操控和构建能力
  • 高性能Json path查询(顶级的兼容性和性能)
  • 顺带支持序列化、反序列化
  • 基于 无参构造函数 + 字段 操作实现(反序列化时不会有触发危险动作的风险)
<dependency>
<groupId>org.noear</groupId>
<artifactId>snack3</artifactId>
<version>3.2.35</version>
</dependency>

本次累计更新:

  • 修复 值为""时,转为 LocalDateTime 会出错的问题
  • 增加 val 可自动转为集合的一部分(如果接收的是集合字段)

简单演示:

ONode o = ONode.loadStr(json); //将json String 转为 ONode
ONode o = ONode.loadObj(user); //将java Object 转为 ONode

//不确定返回数量的,者会返回array类型
//找到所有的187开头的手机号,改为186,最后输出修改后的json
o.select("$..mobile[?(@ =~ /^187/)]").forEach(n->n.val("186")).toJson();
//找到data.list[1]下的的mobile字段,并转为long
o.select("$.data.list[1].mobile").getLong();

//查找所有手机号,并转为List<String> 
List<String> list = o.select("$..mobile").toObject(List.class);
//查询data.list下的所有mobile,并转为List<String>
List<String> list = o.select("$.data.list[*].mobile").toObject(List.class);
//找到187手机号的用户,并输出List<UserModel>
List<UserModel> list = o.select("$.data.list[?(@.mobile =~ /^187/)]")
.toObjectList(UserModel.class);
//或
List<UserModel> list = o.select("$.data.list[?(@.mobile =~ /^187/)]")
.toObjectList(UserModel.class);

项目地址:

  • https://gitee.com/noear/snack3
  • https://github.com/noear/snack3

相關推薦

2023-03-05

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2024-05-30

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2024-04-01

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2023-02-21

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2022-09-08

决方案(可以理解为微服务架构支持套件)。基于 Solon 框架开发,并支持完整的 Solon Cloud 规范;已在生产环境奔跑了4年。 功能相当于:consul + rabbitmq + elk + prometheus + openFaas + quartz + 等等,并有机结合在一起。 或者约等于:naco

2024-09-27

r}和spel格式的表达式,可满足不同场景,灵活可扩展 orm框架扩展:目前支持MyBatis、Mybatis-Plus、Mybatis-Flex和Jpa,后续会由社区提供其他支持,扩展方便 数据库支持:目前支持MySQL 、Oracle 和PostgreSQL,后续会继续支持其他数据库

2022-06-26

2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API, 支持JSON/JSONB两种协议,JSONPath 是一等公民。 支持全量解析和部分解析。 支持Java服务端、客户端Android、大数据场景。 支持Kotl

2023-09-01

域的神器 or 鸡肋? Solon 是什么? Java 生态型应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模)。与其他框架相比,解决了两个重要的痛点:启动慢,费内存。 关键记

2023-01-09

决方案(可以理解为微服务架构支持套件)。基于 Solon 框架开发,并支持完整的 Solon Cloud 规范;已在生产环境奔跑了5年。 功能相当于:consul + rabbitmq + elk + prometheus + openFaas + quartz + 等等,并有机结合在一起。 或者约等于:naco

2022-10-08

HertzBeat v1.2.0 已经发布,高性能监控告警系统。 V1.2.0 官网: hertzbeat.com | tancloud.cn 大家好,HertzBeat v1.2.0 发布啦!这个版本支持了更强大的jsonpath去采集自定义监控指标,将springboot版本升级到2.7,支持指标单位的提取转换展示等

2024-01-11

时同步更新相关订阅消息数量角标 补充连接错误提醒 JsonPath 表达式取值如果是数组的取数组的第一个值 优化暗色主题下消息视图文字颜色 修复 🐛 修复Payload 可能为 null 的问题 修复非最大化的窗口大小和位置不能

2023-05-03

http + snack3 开发的,一个代码直白和简单的 Elasticsearch ORM 框架。 支持 jdk8、jdk11、jdk17、jdk20 支持 es7.x、es8.x 采用 lambda 链式写法,很是清新 public class DemoApp { public void demo() { EsContext esx = new EsContext("localhost:30480"); //批量

2022-10-30

http + snack3 开发的,一个代码直白和简单的 Elasticsearch ORM 框架。 支持 jdk8、jdk11、jdk17、jdk19 支持 es7.x、es8.x 采用 lambda 链式写法,很是清新 public class DemoApp { public void demo() { EsContext esx = new EsContext("localhost:30480"); //批量

2023-05-08

http + snack3 开发的,一个代码直白和简单的 Elasticsearch ORM 框架。 支持 jdk8、jdk11、jdk17、jdk20 支持 es7.x、es8.x 采用 lambda 链式写法,很是清新 public class DemoApp { public void demo() { EsContext esx = new EsContext("localhost:30480"); //批量