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


猜你喜欢
- idea这个工具真的很好 很强大。而且非常的好用。用过idea的人,估计都不想用eclipse了。idea这个工具虽然好用,但是对硬件还是有
- 本文实例为大家分享了SeekBar拖动条的应用代码,供大家参考,具体内容如下目标效果在该页面中放一个拖动条的状态提示信息,一个拖动条以及一个
- 编写程序,利用continue语句实现循环体过滤器,过滤“老鹰”字符串,并做相应的处理,但是放弃continue语句之后的所有代码。即若遇到
- 本文实例为大家分享了android绘制曲线和折线图的具体代码,供大家参考,具体内容如下(曲线) (折线)1.CurveView.j
- 前言Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spr
- 首先我们应该知道线程安全问题一般发生在成员变量上,这是为什么啦?因为成员变量是存放在堆内存中,而堆内存又是线程共享的,这就造成了线程安全问题
- 最近由于工作要求:前端采用vue开发,后端采用springboot开发,前后端分离开发,最后前端页面又整合到后端来。经历多次采坑,总结以下方
- 1、说明向上转型就是把一个子类引用给一个父类引用,也就是父类引用 引用了子类的对象,即父类 父类对象 = 子类实例。此时通过父类引用变量调用
- 前言文件上传是项目开发中最常见的功能之一 ,SpringMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配Multi
- 现在的手游基本都是重复操作,一个动作要等好久,结束之后继续另一个动作.很麻烦,所以动起了自己写一个游戏辅助的心思.这个辅助本身没什么难度,就
- 前言EasyCache升级兼容 Springboot2,有个业务系统启动总是会卡住,最后抛出超时异常,如下:java.util.concur
- .NET包含一个特殊的Object类,可以接受任意的数据类型的值,当所传递或所赋值的类型不是一个特定的数据类型时,object类就提供了一种
- 什么是程序集?1.程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合。2.程序集是组件复用,以及实施安全策略和版
- 引言从本篇文章开始,我们将介绍 Java AQS 的实现方式,本文先介绍 AQS 的内部数据是如何组织的,后面的文章中再分别介绍 AQS 的
- mysql实现配置中心本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程。有关项目源
- CollectionCollection接口被List接口和Set接口继承本章只介绍常用的集合ListArrayList是List接口的实现
- 本文实例为大家分享了winform可拖动的自定义Label控件,供大家参考,具体内容如下效果预览:实现步骤如下:(1)首先在项目上右击选择:
- 实践过程😜富文本芝麻粒儿提醒:标签是成对出现的就不要省略,有的不是成对的在修改了后就恢复过来,如下方alpha示例,否则多了很容易出现意外的
- 通过VideoView播放视频的步骤:1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件2、调用Video
- 前言:这里所说的全局Dialog是指无论当前应用是处于哪一个页面上,都能够及时弹出Dialog来提示用户一些信息,用户体验不会很好,一般应用