json框架有哪些,高性能 Jsonpath 框架,Snack3 3.2.57 发布

科技资讯 投稿 19100 0 评论

json框架有哪些,高性能 Jsonpath 框架,Snack3 3.2.57 发布

json框架有哪些,Snack3,一个高性能的 JsonPath 框架

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

  • 强调文档树的操控和构建能力

  • 高性能Json path查询(顶级的兼容性和性能)

  • 顺带支持序列化、反序列化

  • 基于 无参构造函数 + 字段 操作实现(反序列化时不会有触发危险动作的风险)

<dependency>
  <groupId>org.noear</groupId>
  <artifactId>snack3</artifactId>
  <version>3.2.57</version>
</dependency>

本次累计更新:

  • 增加 ClassLoader 自动指定能力

  • 增加 @NodeAttr 对 LocalTime,LocalDate,LocalDateTime 有效

  • 增加 selectOrNew( 接口,可根据 jsonpath 表达式构建结构;

ONode oNode = new ONode(;
oNode.selectOrNew("$.orders[0].price".val(500;
System.out.println(oNode.toJson(;
//{"orders":[{"price":500}]}

简单演示:

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

编程笔记 » json框架有哪些,高性能 Jsonpath 框架,Snack3 3.2.57 发布

赞同 (52) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽