• 高性能 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);
    

    项目地址:

  • 相关阅读:
    C++中无数据成员的类的对象占用内存大小
    malloc在函数内分配内存问题
    字符数组拷贝与strcpy函数
    Python,anaconda及pycharm安装过程笔记
    DFS-深度优先搜索与BFS-广度优先搜索
    90 k数和 II
    88 Lowest Common Ancestor of a Binary Tree
    AdaBoost笔记之代码
    79 最长公共子串
    78 最长公共前缀
  • 原文地址:https://www.cnblogs.com/noear/p/16383781.html
Copyright © 2020-2023  润新知