Json:Java对象和Json文本转换工具类

262 阅读2分钟

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 中添加:


<dependency>

<groupId>io.njdi</groupId>

<artifactId>durian-common</artifactId>

<version>${version}</version>

</dependency>

${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<String, Integer>

    • Map<String, Long>

    • Map<String, Float>

    • Map<String, Double>

    • Map<String, Boolean>

    • Map<String, String>

    • Map<String, Object>

    • 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<Integer> 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.JsonType.OBJECT_LIST

      字典

      Json 文本 转换为 字典时,需要使用 Type 指定转换字典的元素值类型,如:

      
      Map<String, Integer> map = Json.fromJson("{'a': 1, 'b': 2}", Json.JsonType.INT_MAP);
      
      

      字典的元素值类型 和 Type 的对应关系:

      • Map<String, Integer> -> Json.JsonType.INT_MAP

      • Map<String, Long> -> Json.JsonType.LONG_MAP

      • Map<String, Float> -> Json.JsonType.FLOAT_MAP

      • Map<String, Double> -> Json.JsonType.DOUBLE_MAP

      • Map<String, Boolean> -> Json.JsonType.BOOLEAN_MAP

      • Map<String, String> -> Json.JsonType.STRING_MAP

      • Map<String, Object> -> Json.JsonType.OBJECT_MAP

      Json 文本 转换为 类对象时,需要使用 Class 指定转换对象的类型,如:

      
      MyObject obj = Json.fromJson("{'a': 1, 'b': 2.0, 'c': true, d: 'str'}", MyObject.class);