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

Json:Java对象和Json文本转换工具类的更多相关文章

  1. java 二进制数字符串转换工具类

    java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...

  2. 时间日期转换工具类,获取当前时间YYYYMMDD24HHMISS、YYYYMMDDHHMISS

    YYYYMMDD24HHMISS:24小时制时间(显示上只是比YYYYMMDDHHMISS中间多了一个24),例:2018102224112440 YYYYMMDDHHMISS:12小时制时间,例20 ...

  3. Java对象、Json、Xml转换工具Jackson使用

    在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson.JSON-lib.Jackson等等.本文主要介绍Jackson的使用,Jacks ...

  4. GSON中Java对象与JSON互相转换——(一)

    json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串. 常用的json转换工具有如下几种: 1)jsonlib 2)Gson:google 3)fastjson:阿 ...

  5. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

  6. java对象和json对象之间互相转换

    import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.Li ...

  7. Java对象与JSON互相转换jsonlib以及手动创建JSON对象与数组——(二)

    首先声明一下,jsonlib转换与GSON相比太差劲了,操作不是一般的繁琐.GSON可以直接转换成各种集合与对象类型.强烈推荐使用GSON.而且GSON一个方法就可以解决,jsonlib转来转去太繁琐 ...

  8. jackson java对象和json对象的互相转换

    概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...

  9. java对象与json字符串的互相转换

    java对象与json字符串的互相转换 1.采用 net.sf.json.JSONObject maven依赖包: <dependency> <groupId>net.sf.j ...

随机推荐

  1. 【分享数据】vm-insert的压缩比达到29倍

    vm-insert采用remote-write的http协议来接收metric数据,然后按照一定算法转发到vm-storage群集. vm-insert到vm-storage这里是用了自己的二进制协议 ...

  2. Anchor CMS 0.12.7 跨站请求伪造漏洞(CVE-2020-23342)

    这个漏洞复现相对来说很简单,而且这个Anchor CMS也十分适合新手训练代码审计能力.里面是一个php框架的轻量级设计,通过路由实现的传递参数. 0x00 漏洞介绍 Anchor(CMS)是一款优秀 ...

  3. MyCms 开源自媒体系统,系统配置字段说明

    功能说明 站点名称:站点的简要描述名称,没有启用SEO插件时,将用此字段用作站点标题. 站点地址:站点的完整地址(包含 http/https),此字段有多处依赖用于生成链接,请正确填写. 站点logo ...

  4. golang中的标准库反射

    反射 反射是指程序在运行期对程序本身访问和修改的能力 变量的内在机制 变量包含类型信息和值信息 var arr [10]int arr[0] = 10 类型信息:是静态的元信息,是预先定义好的 值信息 ...

  5. linux文件编辑器快捷方式

    一:文件编辑器快捷方式 7.光标快速移动快捷方式 ①. 快速切换光标到底行 shift + G ②. 快速切换光标到首行 gg ③. 快速跳转到行首 0 ④. 快速跳转到行尾 shift + $ ⑤. ...

  6. jstack定位java程序CPU使用高问题

    top top -Hp 进程id printf "0x%x\n" 2769746 jstack 进程id [root ~]$ printf "0x%x\n" 2 ...

  7. Spring系列7:`autowire`自动装配怎么玩

    回顾 前几篇我们介绍各种依赖依赖注入,都是显式指定的,配置明确但同时也有些繁杂和重复."很多发明的出发点,都是为了偷懒,懒人是推动社会进步的原动力".Spring 提供了自动注入依 ...

  8. Java多线程专题6: Queue和List

    合集目录 Java多线程专题6: Queue和List CopyOnWriteArrayList 如何通过写时拷贝实现并发安全的 List? CopyOnWrite(COW), 是计算机程序设计领域中 ...

  9. Linux中date命令用法

    1.以下是服务器现在的时间,当前时间的各种表示方法,表示成自己想要的时间格式,后面的范例将会在这个时间基础之上进行演示,同时这也是熟练掌握后面各种date命令的前提,请读者注意 [root@RHEL6 ...

  10. jQuery EasyUI 的editor组件使用

    问题:最近在优化一个项目时,前端用到了 easyui这个插件来实现表格,搞了很久,才实现出一部分功能,但是还是有很多地方不熟悉,故记录一下,以后再研究 第一个实例------------------- ...