This commit is contained in:
Looly
2020-04-17 15:54:43 +08:00
parent 94c824e03d
commit 7e8096a75c
6 changed files with 242 additions and 144 deletions

View File

@@ -23,9 +23,8 @@ import java.lang.reflect.Type;
import java.nio.charset.Charset;
import java.time.temporal.TemporalAccessor;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
@@ -100,6 +99,19 @@ public final class JSONUtil {
return new JSONObject(obj);
}
/**
* JSON字符串转JSONObject对象<br>
* 此方法会忽略空值但是对JSON字符串不影响
*
* @param obj Bean对象或者Map
* @param config JSON配置
* @return JSONObject
* @since 5.3.1
*/
public static JSONObject parseObj(Object obj, JSONConfig config) {
return new JSONObject(obj, config);
}
/**
* JSON字符串转JSONObject对象
*
@@ -146,6 +158,18 @@ public final class JSONUtil {
return new JSONArray(arrayOrCollection);
}
/**
* JSON字符串转JSONArray
*
* @param arrayOrCollection 数组或集合对象
* @param config JSON配置
* @return JSONArray
* @since 5.3.1
*/
public static JSONArray parseArray(Object arrayOrCollection, JSONConfig config) {
return new JSONArray(arrayOrCollection, config);
}
/**
* JSON字符串转JSONArray
*
@@ -169,6 +193,22 @@ public final class JSONUtil {
* @return JSON
*/
public static JSON parse(Object obj) {
return parse(obj, JSONConfig.create());
}
/**
* 转换对象为JSON<br>
* 支持的对象:<br>
* String: 转换为相应的对象<br>
* Array、Iterable、Iterator转换为JSONArray<br>
* Bean对象转为JSONObject
*
* @param obj 对象
* @param config JSON配置
* @return JSON
* @since 5.3.1
*/
public static JSON parse(Object obj, JSONConfig config) {
if (null == obj) {
return null;
}
@@ -176,17 +216,13 @@ public final class JSONUtil {
JSON json;
if (obj instanceof JSON) {
json = (JSON) obj;
} else if (obj instanceof String) {
String jsonStr = ((String) obj).trim();
if (jsonStr.startsWith("[")) {
json = parseArray(jsonStr);
} else {
json = parseObj(jsonStr);
}
} else if (obj instanceof Collection || obj.getClass().isArray()) {// 列表
json = new JSONArray(obj);
} else if (obj instanceof CharSequence) {
final String jsonStr = StrUtil.trim((CharSequence) obj);
json = StrUtil.startWith(jsonStr, '[') ? parseArray(jsonStr) : parseObj(jsonStr);
} else if (obj instanceof Iterable || obj instanceof Iterator || ArrayUtil.isArray(obj)) {// 列表
json = new JSONArray(obj, config);
} else {// 对象
json = new JSONObject(obj);
json = new JSONObject(obj, config);
}
return json;
@@ -206,8 +242,10 @@ public final class JSONUtil {
* Map转化为JSONObject
*
* @param map {@link Map}
* @return JSONObject
* @return JSONObjec
* @deprecated 请直接使用 {@link #parseObj(Object)}
*/
@Deprecated
public static JSONObject parseFromMap(Map<?, ?> map) {
return new JSONObject(map);
}
@@ -217,17 +255,11 @@ public final class JSONUtil {
*
* @param bundle ResourceBundle文件
* @return JSONObject
* @deprecated 请直接使用 {@link #parseObj(Object)}
*/
@Deprecated
public static JSONObject parseFromResourceBundle(ResourceBundle bundle) {
JSONObject jsonObject = new JSONObject();
Enumeration<String> keys = bundle.getKeys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
if (key != null) {
InternalJSONUtil.propertyPut(jsonObject, key, bundle.getString(key));
}
}
return jsonObject;
return new JSONObject(bundle);
}
// -------------------------------------------------------------------- Pause end