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
Java 对象 转换为 Json 文本 Java 对象 转换为 Json 文本可以使用方法:
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
数组 Json 文本 转换为 数组时,需要使用 Type 指定转换数组的元素类型,如:
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
列表 Json 文本 转换为 列表时,需要使用 Type 指定转换列表的元素类型,如:
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
字典 Json 文本 转换为 字典时,需要使用 Type 指定转换字典的元素值类型,如:
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
【Json(Java对象和Json文本转换工具类)】Json 文本 转换为 类对象时,需要使用 Class 指定转换对象的类型,如:
MyObject obj = Json.fromJson("{'a': 1, 'b': 2.0, 'c': true, d: 'str'}", MyObject.class);

    推荐阅读