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

  • 相关阅读:
    最快速的Android开发环境搭建ADT-Bundle及Hello World
    android sdk manager 无法更新解决方法
    ADO.NET 新特性之SqlBulkCopy
    WCF错误:413 Request Entity Too Large
    构建高性能的ASP.NET应用程序
    编写高性能Web应用程序的10个技巧
    很不错的jQuery学习资料和实例
    学习jQuery之旅
    50个常用的JQuery代码
    机器学习瓶颈
  • 原文地址:https://www.cnblogs.com/luoyesiqiu/p/lson.html
Copyright © 2011-2022 走看看