Json(Java对象和Json文本转换工具类)
Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类。
安装
下载源码
git clone https://github.com/njdi/durian.git
编译源码
cd durian/
切换至最新版本(Tag),如:0.4,
git checkout 0.4
编译安装至本地 Maven 仓库:
mvn clean package
添加依赖 SpringBoot 应用使用 Config 时,需要在 Maven pom.xml 中添加:
io.njdi
durian-common
${version}
${version} 替换为具体的版本号,如:0.4。
Java 对象 Java 对象支持如下类型:基本数据类型、数组、列表、字典。
基本数据类型
- Integer/int
- Long/long
- Float/float
- Double/double
- Boolean/boolean
- String
- int[]
- long[]
- float[]
- double[]
- boolean[]
- String[]
- List
- List
- List
- List
- List
- List
- List
- Map
- Map
- Map
- Map
- Map
- Map
- Map
- Class
Json.toJson(obj)
基本数据类型
String json;
json = Json.toJson(1);
json = Json.toJson(1.0);
json = Json.toJson(true);
json = Json.toJson("str");
数组
String json;
json = Json.toJson(new int[]{1, 2, 3});
json = Json.toJson(new double[]{1.0, 2.0, 3.0});
json = Json.toJson(new boolean[]{true, false});
json = Json.toJson(new String[]{"1", "2.0", "true"});
列表
String json;
json = Json.toJson(List.of(1, 2, 3));
json = Json.toJson(List.of(1.0, 2.0, 3.0));
json = Json.toJson(List.of(true, false));
json = Json.toJson(List.of("1", "2.0", "true"));
字典
String json;
json = Json.toJson(Map.of("key1", 1, "key2", 2));
json = Json.toJson(Map.of("key1", 1.0, "key2", 2.0));
json = Json.toJson(Map.of("key1", true, "key2", false));
json = Json.toJson(Map.of("key1", "str", "key2", "2.0"));
类
public static class MyObject {
private int a;
private double b;
private boolean c;
private String d;
}MyObject object = new MyObject();
object.a = 1;
object.b = 2.0;
object.c = true;
object.d = "str";
String json = Json.toJson(object);
Json 文本 转换为 Java 对象 Json 文本 转换为 Java 对象时,需要通过参数指定转换对象的类型信息:
Json.fromJson(json, Class)
或者
Json.fromJson(json, Type)
基本数据类型 Json 文本 转换为 基本数据类型时,需要使用 Type 指定转换类型,如:
int a = Json.fromJson("1", Json.JsonType.INT);
基本数据类型 和 Type 的对应关系:
- Integer/int -> Json.JsonType.INT
- Long/long -> Json.JsonType.LONG
- Float/float -> Json.JsonType.FLOAT
- Double/double -> Json.JsonType.DOUBLE
- Boolean/boolean -> Json.JsonType.BOOLEAN
- String -> Json.JsonType.STRING
int[] arr = Json.fromJson("[1, 2, 3]", Json.JsonType.INT_ARRAY);
数组的元素类型 和 Type 的对应关系:
- int[] -> Json.JsonType.INT_ARRAY
- long[] -> Json.JsonType.LONG_ARRAY
- float[] -> Json.JsonType.FLOAT_ARRAY
- double[] -> Json.JsonType.DOUBLE_ARRAY
- boolean[] -> Json.JsonType.BOOLEAN_ARRAY
- String[] -> Json.JsonType.STRING_ARRAY
List list = Json.fromJson("[1, 2, 3]", Json.JsonType.INT_LIST);
列表的元素类型 和 Type 的对应关系:
- List -> Json.JsonType.INT_LIST
- List -> Json.JsonType.LONG_LIST
- List -> Json.JsonType.FLOAT_LIST
- List -> Json.JsonType.DOUBLE_LIST
- List -> Json.JsonType.BOOLEAN_LIST
- List -> Json.JsonType.STRING_LIST
- List
Map map = Json.fromJson("{'a': 1, 'b': 2}", Json.JsonType.INT_MAP);
字典的元素值类型 和 Type 的对应关系:
- Map -> Json.JsonType.INT_MAP
- Map -> Json.JsonType.LONG_MAP
- Map -> Json.JsonType.FLOAT_MAP
- Map -> Json.JsonType.DOUBLE_MAP
- Map -> Json.JsonType.BOOLEAN_MAP
- Map -> Json.JsonType.STRING_MAP
- Map -> Json.JsonType.OBJECT_MAP
MyObject obj = Json.fromJson("{'a': 1, 'b': 2.0, 'c': true, d: 'str'}", MyObject.class);
推荐阅读
- JsonResponse类的使用、form表单上传文件补充、CBV和FBV、HTML的模板语法之传值与过滤器
- JAVA大作业之图书管理系统实现全解
- Java的锁机制:synchronized和CAS详解
- JavaScript|Jquery对象、Jquery选择器、Jquery Dom操作及事件
- JavaScript|JavaScript — 对象创建模式与继承模式
- JavaScript|JavaScript — 线程机制与事件机制
- javascript|ES6新特性(上)——let及const、解构赋值、模板字符串、Symbol
- JavaScript|ES6新特性总结(2)解构赋值、模板字符串、Symbol
- #|ES6基础学习——第一天(let 声明、const 声明、解构赋值、模板字符串(反引号)、简化对象写法、箭头函数、参数默认值、rest 参数、spread 扩展运算符)
- 前端必备知识|ES6学习笔记(4)——字符串\正则\数值\数组\函数\对象的扩展