MapToJsonConverter.java
3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.xly.milvus.util;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.util.List;
import java.util.Map;
/**
* Map 转 JsonObject 工具类
*/
public class MapToJsonConverter {
/**
* 将 Map<String, Object> 转换为 JsonObject
*/
public static JsonObject convert(Map<String, Object> map) {
JsonObject jsonObject = new JsonObject();
if (map == null || map.isEmpty()) {
return jsonObject;
}
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
addToJson(jsonObject, key, value);
}
return jsonObject;
}
/**
* 递归添加值到JsonObject
*/
@SuppressWarnings("unchecked")
private static void addToJson(JsonObject jsonObject, String key, Object value) {
if (value == null) {
jsonObject.add(key, null);
} else if (value instanceof String) {
jsonObject.addProperty(key, (String) value);
} else if (value instanceof Number) {
jsonObject.addProperty(key, (Number) value);
} else if (value instanceof Boolean) {
jsonObject.addProperty(key, (Boolean) value);
} else if (value instanceof Character) {
jsonObject.addProperty(key, (Character) value);
} else if (value instanceof Map) {
jsonObject.add(key, convert((Map<String, Object>) value));
} else if (value instanceof List) {
jsonObject.add(key, convertList((List<?>) value));
} else if (value instanceof Object[]) {
jsonObject.add(key, convertArray((Object[]) value));
} else {
// 其他类型转换为字符串
jsonObject.addProperty(key, value.toString());
}
}
/**
* 转换List为JsonArray
*/
private static JsonArray convertList(List<?> list) {
JsonArray jsonArray = new JsonArray();
for (Object item : list) {
if (item == null) {
jsonArray.add((JsonObject) null);
} else if (item instanceof String) {
jsonArray.add((String) item);
} else if (item instanceof Number) {
jsonArray.add((Number) item);
} else if (item instanceof Boolean) {
jsonArray.add((Boolean) item);
} else if (item instanceof Character) {
jsonArray.add((Character) item);
} else if (item instanceof Map) {
jsonArray.add(convert((Map<String, Object>) item));
} else if (item instanceof List) {
jsonArray.add(convertList((List<?>) item));
} else {
jsonArray.add(item.toString());
}
}
return jsonArray;
}
/**
* 转换数组为JsonArray
*/
private static JsonArray convertArray(Object[] array) {
JsonArray jsonArray = new JsonArray();
for (Object item : array) {
if (item == null) {
jsonArray.add((JsonObject) null);
} else if (item instanceof String) {
jsonArray.add((String) item);
} else if (item instanceof Number) {
jsonArray.add((Number) item);
} else if (item instanceof Boolean) {
jsonArray.add((Boolean) item);
} else if (item instanceof Character) {
jsonArray.add((Character) item);
} else if (item instanceof Map) {
jsonArray.add(convert((Map<String, Object>) item));
} else if (item instanceof List) {
jsonArray.add(convertList((List<?>) item));
} else {
jsonArray.add(item.toString());
}
}
return jsonArray;
}
}