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);
Json:Java对象和Json文本转换工具类的更多相关文章
- java 二进制数字符串转换工具类
java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...
- 时间日期转换工具类,获取当前时间YYYYMMDD24HHMISS、YYYYMMDDHHMISS
YYYYMMDD24HHMISS:24小时制时间(显示上只是比YYYYMMDDHHMISS中间多了一个24),例:2018102224112440 YYYYMMDDHHMISS:12小时制时间,例20 ...
- Java对象、Json、Xml转换工具Jackson使用
在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson.JSON-lib.Jackson等等.本文主要介绍Jackson的使用,Jacks ...
- GSON中Java对象与JSON互相转换——(一)
json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串. 常用的json转换工具有如下几种: 1)jsonlib 2)Gson:google 3)fastjson:阿 ...
- Java基础97 json插件的使用(java对象和json字符串对象之间的转换)
1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...
- java对象和json对象之间互相转换
import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.Li ...
- Java对象与JSON互相转换jsonlib以及手动创建JSON对象与数组——(二)
首先声明一下,jsonlib转换与GSON相比太差劲了,操作不是一般的繁琐.GSON可以直接转换成各种集合与对象类型.强烈推荐使用GSON.而且GSON一个方法就可以解决,jsonlib转来转去太繁琐 ...
- jackson java对象和json对象的互相转换
概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...
- java对象与json字符串的互相转换
java对象与json字符串的互相转换 1.采用 net.sf.json.JSONObject maven依赖包: <dependency> <groupId>net.sf.j ...
随机推荐
- 《剑指offer》面试题68 - I. 二叉搜索树的最近公共祖先
问题描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p ...
- ctf--web刷题记录 ACTF2020back up file 、极客大挑战2019php、secret file
ACTF2020back up file backup file指的是备份文件,一般备份文件的后缀有".git" .".svn"." .swp&quo ...
- golang gin框架中实现一个简单的不是特别精确的秒级限流器
起因 看了两篇关于golang中限流器的帖子: Gin 开发实践:如何实现限流中间件 常用限流策略--漏桶与令牌桶介绍 我照着用,居然没效果-- 时间有限没有深究.这实在是一个很简单的功能,我的需求是 ...
- C++模板之成员模板和模板构造函数
namespace myspace6 { template<typename T1> class TC { public: template<typename T2> TC(T ...
- golang中通过递归或通道实现斐波那契数列
1. 循环实现 package main import "fmt" func fibonacciFor(nums int) (s1 []int) { // 循环实现斐波那切数列 n ...
- Web播放器
web视频播放器的使用及遇到的问题记录 TcPlayer播放器(腾讯Web超级播放器) https://cloud.tencent.com/document/product/881/20207 Ste ...
- linux中sort命令全面解析
目录 一:sort命令作用 二:sort格式 1.sort参数 2.参数解析 sort命令简介 Linux sort 命令用于将文本文件内容加以排序. sort 可针对文本文件的内容,以行为单位来排序 ...
- maven常用打包命令
常用maven命令 执行与构建过程(编译,测试,打包)相关的命令必须进入pom.xml所在位置执行 mvn clean:清理(打包好的程序放在生成的名为target的文件中,清理即删除文件中打包好的程 ...
- 你需要的Grid布局入门教程
一.Grid布局概述 首先,Grid 布局与 Flex布局 有一定的相似性,都可以指定容器内部多个项目的位置.但是,Grid 布局远比 Flex 布局强大! Flex 布局是轴线布局,只能指定&quo ...
- 分页方法需要参数(当前页数,总数据量,拿到query的值)
class Pagination: def __init__(self, page_num, all_count ,params=None,per_num=10,max_show=11): " ...