mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
fix code
This commit is contained in:
parent
7f60318dd8
commit
ec204f8fc2
@ -34,6 +34,7 @@ import java.io.IOException;
|
|||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@ -44,7 +45,50 @@ import java.util.function.Predicate;
|
|||||||
*/
|
*/
|
||||||
public final class InternalJSONUtil {
|
public final class InternalJSONUtil {
|
||||||
|
|
||||||
private InternalJSONUtil() {
|
/**
|
||||||
|
* 尝试转换字符串为number, boolean, or null,无法转换返回String<br>
|
||||||
|
* 此方法用于解析JSON字符串时,将字符串中的值转换为JSON值对象
|
||||||
|
*
|
||||||
|
* @param string A String.
|
||||||
|
* @return A simple JSON value.
|
||||||
|
*/
|
||||||
|
public static Object parseValueFromString(final String string) {
|
||||||
|
// null处理
|
||||||
|
if (StrUtil.isEmpty(string) || StrUtil.NULL.equalsIgnoreCase(string)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// boolean处理
|
||||||
|
if ("true".equalsIgnoreCase(string)) {
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
if ("false".equalsIgnoreCase(string)) {
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Number处理
|
||||||
|
final char b = string.charAt(0);
|
||||||
|
if ((b >= '0' && b <= '9') || b == '-') {
|
||||||
|
try {
|
||||||
|
if (StrUtil.containsAnyIgnoreCase(string, ".", "e")) {
|
||||||
|
// pr#192@Gitee,Double会出现小数精度丢失问题,此处使用BigDecimal
|
||||||
|
return new BigDecimal(string);
|
||||||
|
} else {
|
||||||
|
final long myLong = Long.parseLong(string);
|
||||||
|
if (string.equals(Long.toString(myLong))) {
|
||||||
|
if (myLong == (int) myLong) {
|
||||||
|
return (int) myLong;
|
||||||
|
} else {
|
||||||
|
return myLong;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (final Exception ignore) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 其它情况返回原String值下
|
||||||
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,7 +15,6 @@ package org.dromara.hutool.json;
|
|||||||
import org.dromara.hutool.core.io.IoUtil;
|
import org.dromara.hutool.core.io.IoUtil;
|
||||||
import org.dromara.hutool.core.io.ReaderWrapper;
|
import org.dromara.hutool.core.io.ReaderWrapper;
|
||||||
import org.dromara.hutool.core.lang.Assert;
|
import org.dromara.hutool.core.lang.Assert;
|
||||||
import org.dromara.hutool.json.mapper.JSONValueMapper;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -393,7 +392,7 @@ public class JSONTokener extends ReaderWrapper {
|
|||||||
if (valueString.isEmpty()) {
|
if (valueString.isEmpty()) {
|
||||||
throw this.syntaxError("Missing value");
|
throw this.syntaxError("Missing value");
|
||||||
}
|
}
|
||||||
return getOnlyStringValue ? valueString : JSONValueMapper.toJsonValue(valueString);
|
return getOnlyStringValue ? valueString : InternalJSONUtil.parseValueFromString(valueString);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
package org.dromara.hutool.json.mapper;
|
package org.dromara.hutool.json.mapper;
|
||||||
|
|
||||||
import org.dromara.hutool.core.array.ArrayUtil;
|
import org.dromara.hutool.core.array.ArrayUtil;
|
||||||
import org.dromara.hutool.core.text.StrUtil;
|
|
||||||
import org.dromara.hutool.core.util.ObjUtil;
|
import org.dromara.hutool.core.util.ObjUtil;
|
||||||
import org.dromara.hutool.json.JSON;
|
import org.dromara.hutool.json.JSON;
|
||||||
import org.dromara.hutool.json.JSONArray;
|
import org.dromara.hutool.json.JSONArray;
|
||||||
@ -22,8 +21,6 @@ import org.dromara.hutool.json.JSONObject;
|
|||||||
import org.dromara.hutool.json.serialize.JSONStringer;
|
import org.dromara.hutool.json.serialize.JSONStringer;
|
||||||
import org.dromara.hutool.json.writer.GlobalValueWriters;
|
import org.dromara.hutool.json.writer.GlobalValueWriters;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对象和JSON值映射器,用于转换对象为JSON对象中的值<br>
|
* 对象和JSON值映射器,用于转换对象为JSON对象中的值<br>
|
||||||
* 有效的JSON值包括:
|
* 有效的JSON值包括:
|
||||||
@ -51,52 +48,6 @@ public class JSONValueMapper {
|
|||||||
return new JSONValueMapper(jsonConfig);
|
return new JSONValueMapper(jsonConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 尝试转换字符串为number, boolean, or null,无法转换返回String<br>
|
|
||||||
* 此方法用于解析JSON字符串时,将字符串中的值转换为JSON值对象
|
|
||||||
*
|
|
||||||
* @param string A String.
|
|
||||||
* @return A simple JSON value.
|
|
||||||
*/
|
|
||||||
public static Object toJsonValue(final String string) {
|
|
||||||
// null处理
|
|
||||||
if (StrUtil.isEmpty(string) || StrUtil.NULL.equalsIgnoreCase(string)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// boolean处理
|
|
||||||
if ("true".equalsIgnoreCase(string)) {
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
|
||||||
if ("false".equalsIgnoreCase(string)) {
|
|
||||||
return Boolean.FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Number处理
|
|
||||||
final char b = string.charAt(0);
|
|
||||||
if ((b >= '0' && b <= '9') || b == '-') {
|
|
||||||
try {
|
|
||||||
if (StrUtil.containsAnyIgnoreCase(string, ".", "e")) {
|
|
||||||
// pr#192@Gitee,Double会出现小数精度丢失问题,此处使用BigDecimal
|
|
||||||
return new BigDecimal(string);
|
|
||||||
} else {
|
|
||||||
final long myLong = Long.parseLong(string);
|
|
||||||
if (string.equals(Long.toString(myLong))) {
|
|
||||||
if (myLong == (int) myLong) {
|
|
||||||
return (int) myLong;
|
|
||||||
} else {
|
|
||||||
return myLong;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (final Exception ignore) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 其它情况返回原String值下
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final JSONConfig jsonConfig;
|
private final JSONConfig jsonConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,9 +16,9 @@ import org.dromara.hutool.core.lang.mutable.MutableEntry;
|
|||||||
import org.dromara.hutool.core.text.CharUtil;
|
import org.dromara.hutool.core.text.CharUtil;
|
||||||
import org.dromara.hutool.core.text.StrUtil;
|
import org.dromara.hutool.core.text.StrUtil;
|
||||||
import org.dromara.hutool.core.xml.XmlConstants;
|
import org.dromara.hutool.core.xml.XmlConstants;
|
||||||
|
import org.dromara.hutool.json.InternalJSONUtil;
|
||||||
import org.dromara.hutool.json.JSONException;
|
import org.dromara.hutool.json.JSONException;
|
||||||
import org.dromara.hutool.json.JSONObject;
|
import org.dromara.hutool.json.JSONObject;
|
||||||
import org.dromara.hutool.json.mapper.JSONValueMapper;
|
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ public class JSONXMLParser {
|
|||||||
if (!(token instanceof String)) {
|
if (!(token instanceof String)) {
|
||||||
throw x.syntaxError("Missing value");
|
throw x.syntaxError("Missing value");
|
||||||
}
|
}
|
||||||
jsonobject.append(string, keepStrings ? token : JSONValueMapper.toJsonValue((String) token));
|
jsonobject.append(string, keepStrings ? token : InternalJSONUtil.parseValueFromString((String) token));
|
||||||
token = null;
|
token = null;
|
||||||
} else {
|
} else {
|
||||||
jsonobject.append(string, "");
|
jsonobject.append(string, "");
|
||||||
@ -198,7 +198,7 @@ public class JSONXMLParser {
|
|||||||
} else if (token instanceof String) {
|
} else if (token instanceof String) {
|
||||||
string = (String) token;
|
string = (String) token;
|
||||||
if (!string.isEmpty()) {
|
if (!string.isEmpty()) {
|
||||||
jsonobject.append("content", keepStrings ? token : JSONValueMapper.toJsonValue(string));
|
jsonobject.append("content", keepStrings ? token : InternalJSONUtil.parseValueFromString(string));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (token == XmlConstants.C_LT) {
|
} else if (token == XmlConstants.C_LT) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user