zoukankan      html  css  js  c++  java
  • 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)
    • 等等

    项目地址:

  • 相关阅读:
    Servlet--j2e中文乱码解决
    python 通过ftplib 实现上传下载
    使用sqlyog将sql server 迁移到mysql
    c++
    二进制(signed or unsigned)补码
    sql 2012先分离迁移mdf mlf 文件到别的机器后附加 数据库成只读的修复方法
    events
    NoSQL文章
    程序员如何成功的假装在很努力的工作(转)
    如何成为强大的程序员(转)
  • 原文地址:https://www.cnblogs.com/noear/p/15777889.html
Copyright © 2011-2022 走看看