• Snack3 3.2 发布,轻量的Json+Jsonpath框架


    Snack3 是一个轻量的 JSON + Jsonpath 框架。

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

    • 强调文档树的操控和构建能力
    • 做为中间媒体,方便不同格式互转
    • 高性能Json path查询(兼容性和性能很赞)
    • 支持序列化、反序列化
    • 基于 无参构造函数 + 字段 操作实现(反序列化时不会有触发危险动作的风险)
    <dependency>
      <groupId>org.noear</groupId>
      <artifactId>snack3</artifactId>
      <version>3.2.7</version>
    </dependency>
    

    本次累计更新:

    • 增加自定义编码与解码支持
    public class DemoTest {
        public void test(UserDto user) {
            Options options = Options.def();
            options.addEncoder(Date.class, (data, node)->{
                node.val().setNumber(data.getTimes());
            });
            
            ONode oNode = ONode.loadObj(user, options);
        }
    }
    
    • 增加 @ONodeAttr 注解,取代旧的 @NodeName
    public class UserModel {
        public int id;
        @ONodeAttr(serialize = false)
        public String name;
        @ONodeAttr(deserialize = false)
        public String note;
        @ONodeAttr(format = "yyyyMMdd")
        public Date date;
    }
    
    • 增加更复杂的泛型传导
    @lombok.Data
    public class Data<X> {
        private List<X> content;
        private X obj;
        private int pageNum;
        private int pageSize;
        private int totalElements;
        private int pages;
    }
    
    @lombok.Data
    public class House {
        private String sn;
        private String dver_type;
        private String data_status;
        private String created_by;
        private String updated_by;
        private String updated_date;
    }
    
    @lombok.Data
    public class Result<T> {
        private int code;
        private Data<T> data;
    }
    
    
    Result<House> result = ONode.deserialize(json, new Result<House>() {}.getClass());
    
    • 增加对成员类的反序列化支持
    public class Server {
        public static class One{
            public int id;
            public String name;
        }
    }
    
    Server.One one = ONode.deserialize(json, Server.One.class);
    
    • 增加接口 ONode::getRawString()
    • 增加接口 ONode::getRawNumber()
    • 增加接口 ONode::getRawBoolean()
    • 增加接口 ONode::getRawDate()
    • 增加接口 Options::getFeatures()
    • 增加接口 ONode::options(ops->...);
    • 调整接口 ONode::get(key) ,不再自动为文档树添加节点;如有需要改用 ONode::getOrNew(key)
    • 等等

    项目地址:

  • 相关阅读:
    ctypes运用
    win10 下获取不到
    semantic ui加载慢的问题
    python 将图片转换为base64编码转储进数据库
    循环遍历共享文件夹,不需要知道目录深度拷贝上传
    计划和打算
    pyqt按键检测
    python B+数的实现
    JAVA算数运算符
    ASCLL码表
  • 原文地址:https://www.cnblogs.com/noear/p/15777889.html
Copyright © 2020-2023  润新知