• 高性能 Jsonpath 框架,Snack3 3.2.29 发布


    Snack3,一个高性能的 JsonPath 框架

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

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

    本次累计更新:

    • 增加对 Properties 数组的转换支持
    • 增加 @ONodeAttr(ignore,incNull)
    • 增加特性:Feature.TransferCompatible (传输兼容处理)
    • 增加对 isFinal 字段的注入支持
    • 当类型为 interface 时,支持将 string 自动转换为 object
    • 优化异常处理
    • 增加 新特性 UseSetter(即允许使用 setXxx)
    • 枚举支持字符大小写
    • 增加字符串 "true" 转为 Boolean
    • 增新加特性 Feature.DisThreadLocal
    • 增加嵌套泛型反序列化支持
    • 增加对 kotlin data class 和 jdk14+ record 的序列化与反序列化支持

    简单演示:

    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);
    

    项目地址:

  • 相关阅读:
    Java 入门 9 Random 类 随机数
    Java 入门16 面向对象实现之前的小案例购物车
    Java 入门10 java的内存分配,数组内存图( 方法区 栈内存 堆内存)
    JAVA 12 联系回顾之前知识
    Java 13 面向对象的编程 小案例 实现购物车
    面试泛型
    面试反射
    从HashMap的执行流程开始 揭开HashMap底层实现
    面试什么是面向对象?面向对象三大特性?
    面试JMM内存模型
  • 原文地址:https://www.cnblogs.com/noear/p/16383781.html
Copyright © 2020-2023  润新知