Java对象和Json文本转换工具类的实现

作者:萌猫他爸 时间:2022-10-22 19:09:23 

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);
  • 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);

来源:https://www.cnblogs.com/yurunmiao/p/15951965.html

标签:Java,对象,Json文本
0
投稿

猜你喜欢

  • Android提高之SQLite分页读取实现方法

    2022-11-28 22:44:04
  • Android中访问sdcard路径的几种方式

    2023-06-23 08:08:59
  • 仿iphone中短信以及通话记录的时间显示

    2021-07-23 02:34:28
  • IDEA创建Java项目文件并运行教程解析

    2023-01-14 15:50:47
  • My eclipse 端口占用(9360)问题解决办法

    2023-05-19 02:34:32
  • Android应用开发中使用Fragment的入门学习教程

    2023-05-17 04:30:59
  • Java实现删除排序链表中的重复元素的方法

    2022-11-28 08:27:22
  • c# winform时钟的实现代码

    2023-04-05 07:40:53
  • Hibernate三种状态和Session常用的方法

    2021-11-28 15:04:43
  • 详解maven中profiles使用实现

    2022-11-13 23:14:24
  • Android中仿IOS提示框的实现方法

    2023-01-06 15:47:07
  • Android中ActionBar以及menu的代码设置样式

    2023-11-24 03:34:33
  • C#控制台进行文件读写的方法

    2022-02-13 22:03:27
  • Spring配置中transactionAttributes的使用方法介绍

    2021-06-16 10:59:05
  • 零基础学Java:Java开发工具 Eclipse 安装过程创建第一个Java项目及Eclipse的一些基础使用技巧

    2022-09-05 03:46:03
  • C#常用字符串加密解密方法封装代码

    2022-03-04 08:50:48
  • java springmvc实现验证码功能

    2022-09-07 12:12:41
  • Mybatis中xml的动态sql实现示例

    2023-11-29 17:09:36
  • java web实现邮箱激活与忘记密码

    2023-11-18 09:35:26
  • C# 格式化JSON的两种实现方式

    2023-03-14 05:31:16
  • asp之家 软件编程 m.aspxhome.com