背景
互聯網上有許多可用的Json序列化和反序列化的工具,例如fastjson,jackson,Gson等等,那么,我為什么還要自己寫一個?
- 項目不方便依賴其他第三方庫。比如有時候我們編寫SDK,考慮到SDK體積和用戶可能重復依賴而不依賴第三方庫
- 自己想寫
介紹
這個項目被我取名為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
