zoukankan      html  css  js  c++  java
  • 我写了一个简单的JSON序列化和反序列化的工具

    背景

    互联网上有许多可用的Json序列化和反序列化的工具,例如fastjson,jackson,Gson等等,那么,我为什么还要自己写一个?

    1. 项目不方便依赖其他第三方库。比如有时候我们编写SDK,考虑到SDK体积和用户可能重复依赖而不依赖第三方库
    2. 自己想写

    介绍

    这个项目被我取名为Lson,意为Luoyesiqiu的Json库。官方的介绍:Lson是一个可以将Java对象序列化成Json和Json反序列化成Java对象的工具

    用法

    声明一个Bean类

    import com.luoye.lson.annotation.Alias;
    import com.luoye.lson.annotation.Ignore;
    
    public class MyBean {
        public String name;
        public String age;
        @Alias("w")
        public int weight;
        @Ignore
        public double wealth;
    }
    

    Java对象 ==> json

    调用Lson.toJson将Java对象转成Json

    MyBean bean = new MyBean();
    bean.name = "luoyesiqiu";
    bean.age = 18;
    bean.weight = 60;
    bean.wealth = 1000000.0lf;
    String json = Lson.toJson(bean);
    System.out.println(json);
    

    输出:

    {"name":"luoyesiqiu","age":18,"w":60}
    

    json ==> Java对象

    调用Lson.toObject将Json转换成Java对象

    String json = "{"name":"luoyesiqiu","age":18,"w":60}";
    MyBean bean = Lson.toObject(json,MyBean.class);
    System.out.println(bean.name);
    

    输出:

    luoyesiqiu
    

    值得注意的是,在转成Java对象前,对象所属的类必须要拥有默认构造函数。所以,如果当类中添加了自定义的构造函数,那么还需要在类中定义一个无参数公开的默认构造函数,例如:

    public MyBean(){
    }
    

    原理?

    源码很简单,请自行查看源码

    项目地址

    https://github.com/luoyesiqiu/Lson

    欢迎star,fork

  • 相关阅读:
    word-wrap与word-break为长单词换行
    background-origin与background-clip的“区别”
    box-shadow
    你不知道的border-radius
    当document.write 遇到外联script
    getAttribute()方法的第二个参数
    Backbone.js入门教程第二版笔记(3)
    Backbone.js入门教程第二版笔记(2)
    php中的字符串常用函数(二) substr() 截取字符串
    php中类和对象的操作
  • 原文地址:https://www.cnblogs.com/luoyesiqiu/p/lson.html
Copyright © 2011-2022 走看看