Snack3 v3.2.54 发布(支持 kotlin data 类反序化)


Snack3,一个高性能的 JsonPath 框架

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

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

本次累计更新:

  • 增加 kotlin data 类反序列化支持

简单演示:

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

相關推薦

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 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2022-09-08

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

2023-03-05

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

2024-08-27

时不能启动的问题(默认改为不启用) wood 升为 1.3.0 snack3 升为 3.2.109 socket.d 升为 2.5.11 zookeeper 升为 3.9.2 dromara-plugins 升为 0.1.2 kafka_2.13 升为 3.8.0 beetlsql 升为 3.30.10-RELEASE beetl 升为 3.17.0.RELEASE mybatis 升为 3.5.16 mybatis

2023-04-24

用等。从头到尾都是用 Kotlin 编写的。 Ktor 2.3.0 近日正式发布,这次更新为 Ktor 生态带来了许多新功能和改进。以下部分简要介绍了该版本的主要变化: 核心改进 WebSockets ContentNegotiation 插件的显试类型 WebSocket ContentNegotiation

2023-09-01

solon.data.dynamicds 增加默认源配置项 优化 solon.serialization.snack3 对根字符串的解码处理 优化 solon.scheduling 的 @Async 定制能力 优化 solon.docs.openapi2 对基础类型列表识别过度的问题 优化 solon.docs.openapi2 对实体扩展的字段

2023-05-16

Epic Games 近日正式发布了虚幻引擎 5.2 版本,在 5.0 和 5.1 的框架和功能基础上进一步拓展,并为用户带来了更多全新工具。5.2 版本提供了诸多更新和改进,能让用户在打造次世代实时 3D 内容和体验时更加得心应手。同时将继续

2024-06-05

Flow简称为LF。 前言 LF上一次大版本更新是在4月中旬,发布了v2.12.0。推出了版本特性决策路由。 这一次,我们正式发布v2.12.1,推出2个大特性,2个大增强。 希望LF能帮助到更多的开发者,无论你是使用它还是用来学习。我

2023-09-12

n 是另一种有前途的语言。JetBrains 公司于 2016 年首次正式发布 Kotlin 语言;2017 年,Google 宣布为 Android 版 Kotlin 提供一流支持。彼时,由于 Java(Android 的传统语言)被认为过于冗长,Kotlin 的受欢迎程度上升至 1%,并在当时的 TIOBE

2023-11-14

sp;2017 年,彼时 Google 宣布在 Android 上对 Kotlin 提供一流的支持,Kotlin 在 TIOBE 指数中也达到了近 1% 的峰值。但这一记录在本月被打破,目前 Kotlin 的评级为 1.15%。 TIOBE CEO Paul Jansen 评论称,“Kotlin 的进步将止步于

2024-07-13

Add 和 beanExtractorAdd 时 代理失效的问题 redisx 升为 1.6.5 snack3 升为 3.2.104 wood 升为 1.2.12 socket.d 升为 2.5.9 folkmq 升为 1.7.4 water 升为 2.13.3 nacos2 升为 2.3.2(更好兼容 GraalVM Native) smartsocket 升为 1.5.46 smarthttp 升为 1.5.2 项

2023-02-27

发行版,供 Linux 应用程序开发者直接向最终用户构建和发布应用程序。他们认为,健康的应用程序生态对于 OSS 桌面的成功至关重要,让终端用户可以信任和控制他们设备上的数据和开发平台。 为了激励开发者参与建设 Linux

2023-07-18

Spring Data 2023.1.0-M1 现已发布。该版本介绍了 2023.1 版本的主要主题,以及所有主题的初始特性: 拥抱 JDK 21 LTS 对 Kotlin Value Classes 的支持 对 Repository Query Methods 的Limit支持 为 Spring Data JDBC 提供 Schema 和 SpEL 支持 可查