我寫了一個簡單的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM