Json:Java對象和Json文本轉換工具類
Json 是一個用於 Java 對象 和 Json 文本 相互轉換的工具類。
安裝
下載源碼
git clone //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);