背景

互联网上有许多可用的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

最新文章

  1. Bzoj3531: [Sdoi2014]旅行
  2. Mac os壁纸提取
  3. Redis 数据结构之Keys
  4. C++中派生类对象的内存布局
  5. 使用Myeclipse创建自定义签名debug keystore
  6. bootstrap风格的multiselect插件——类似邮箱收件人样式
  7. WTL 中的常见问题汇总
  8. 前端MVC学习笔记(三)——AngularJS服务、路由、内置API、jQueryLite
  9. JEESZ-Zookeeper集群安装
  10. ASP.NET Aries 高级开发教程:Excel导入配置之规则说明(下)
  11. linux服务器使用Jenkins+gradle+git打apk包,报错Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
  12. 【C/C++】c文件重点总结
  13. C# ReaderWriterLockSlim 实现
  14. 【转】Requests 官方中文文档 - 快速上手
  15. ASCII码,utf-8
  16. Gitlab CI-1.Gitlab部署
  17. 2008ZJOI树的统计
  18. jenkins结合脚本实现代码自动化部署及一键回滚至上一版本
  19. flask后端获取前端post/get数据
  20. Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别

热门文章

  1. [源码解析] 并行分布式框架 Celery 之架构 (2)
  2. 在docker容器中使用cplex-python37
  3. Hashtable 渐渐被人们遗忘了,只有面试官还记得,感动
  4. 去空格的四则运算表达式求值-Java
  5. docker命令快速入门
  6. malloc函数详解 glibc2.27
  7. k8s helm 安装etcd
  8. 编写shell脚本让springboot项目在CentOS中开机自启动
  9. java 读取ini文件
  10. 在nginx配置将请求转发到某个真实后端服务ip