mirror of
https://gitee.com/dromara/hutool.git
synced 2026-02-09 09:16:26 +08:00
fix json
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user