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

    <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 文本 转换为 字典时,需要使用 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);
    
  • 相关阅读:
    watch跟computed的区别
    mac修改/etc/profile导致终端所有命令不可使用
    浅析量化交易系统交易者的核心理念
    6、项目第六阶段——用户名登录显示和注册验证码
    Spring Boot与Reactive MongoDB集成
    [回归指标]R2、PCC(Pearson’s r )
    Mysql慢sql优化
    Object类 --java学习笔记
    C# OpenVino Yolov8 Seg 分割
    如何评测一个大模型?(微软亚洲研究院 )
  • 原文地址:https://www.cnblogs.com/yurunmiao/p/15951965.html