mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add DuplicateMode
This commit is contained in:
parent
449fe1fa2e
commit
e54c0b26f6
@ -32,7 +32,7 @@ public class IssueIAFKWPTest {
|
|||||||
@Test
|
@Test
|
||||||
void urlWithFormTest() {
|
void urlWithFormTest() {
|
||||||
final JSONObject obj = JSONUtil.ofObj();
|
final JSONObject obj = JSONUtil.ofObj();
|
||||||
obj.putObj("fields", ListUtil.of("1", "2", "good"));
|
obj.putValue("fields", ListUtil.of("1", "2", "good"));
|
||||||
|
|
||||||
final Map<String, Object> params = new HashMap<>();
|
final Map<String, Object> params = new HashMap<>();
|
||||||
params.put("query", obj.toString());
|
params.put("query", obj.toString());
|
||||||
|
@ -38,8 +38,8 @@ public class RestTest {
|
|||||||
final Request request = Request.of("http://localhost:8090/rest/restTest/")
|
final Request request = Request.of("http://localhost:8090/rest/restTest/")
|
||||||
.method(Method.POST)
|
.method(Method.POST)
|
||||||
.body(JSONUtil.ofObj()
|
.body(JSONUtil.ofObj()
|
||||||
.putObj("aaa", "aaaValue")
|
.putValue("aaa", "aaaValue")
|
||||||
.putObj("键2", "值2").toString());
|
.putValue("键2", "值2").toString());
|
||||||
Assertions.assertEquals("application/json;charset=UTF-8", request.header(HeaderName.CONTENT_TYPE));
|
Assertions.assertEquals("application/json;charset=UTF-8", request.header(HeaderName.CONTENT_TYPE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,8 +50,8 @@ public class RestTest {
|
|||||||
final Request request = Request.of("http://localhost:8090/rest/restTest/")
|
final Request request = Request.of("http://localhost:8090/rest/restTest/")
|
||||||
.method(Method.POST)
|
.method(Method.POST)
|
||||||
.body(JSONUtil.ofObj()
|
.body(JSONUtil.ofObj()
|
||||||
.putObj("aaa", "aaaValue")
|
.putValue("aaa", "aaaValue")
|
||||||
.putObj("键2", "值2").toString());
|
.putValue("键2", "值2").toString());
|
||||||
Console.log(request.send().body());
|
Console.log(request.send().body());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,8 +59,8 @@ public class RestTest {
|
|||||||
@Disabled
|
@Disabled
|
||||||
public void postTest2() {
|
public void postTest2() {
|
||||||
final String result = HttpUtil.post("http://localhost:8090/rest/restTest/", JSONUtil.ofObj()//
|
final String result = HttpUtil.post("http://localhost:8090/rest/restTest/", JSONUtil.ofObj()//
|
||||||
.putObj("aaa", "aaaValue")
|
.putValue("aaa", "aaaValue")
|
||||||
.putObj("键2", "值2").toString());
|
.putValue("键2", "值2").toString());
|
||||||
Console.log(result);
|
Console.log(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +70,8 @@ public class RestTest {
|
|||||||
final Request request = Request.of("http://localhost:8888/restTest")//
|
final Request request = Request.of("http://localhost:8888/restTest")//
|
||||||
.header(HeaderName.CONTENT_TYPE, "application/json")
|
.header(HeaderName.CONTENT_TYPE, "application/json")
|
||||||
.body(JSONUtil.ofObj()
|
.body(JSONUtil.ofObj()
|
||||||
.putObj("aaa", "aaaValue")
|
.putValue("aaa", "aaaValue")
|
||||||
.putObj("键2", "值2").toString());
|
.putValue("键2", "值2").toString());
|
||||||
//noinspection resource
|
//noinspection resource
|
||||||
Console.log(request.send().body());
|
Console.log(request.send().body());
|
||||||
}
|
}
|
||||||
|
@ -44,9 +44,9 @@ public class SimpleServerTest {
|
|||||||
// 返回JSON数据测试
|
// 返回JSON数据测试
|
||||||
.addAction("/restTest", (request, response) -> {
|
.addAction("/restTest", (request, response) -> {
|
||||||
final String res = JSONUtil.ofObj()
|
final String res = JSONUtil.ofObj()
|
||||||
.putObj("id", 1)
|
.putValue("id", 1)
|
||||||
.putObj("method", request.getMethod())
|
.putValue("method", request.getMethod())
|
||||||
.putObj("request", request.getBody())
|
.putValue("request", request.getBody())
|
||||||
.toStringPretty();
|
.toStringPretty();
|
||||||
response.write(res, ContentType.JSON.toString());
|
response.write(res, ContentType.JSON.toString());
|
||||||
})
|
})
|
||||||
|
@ -119,7 +119,7 @@ public class JSONArray extends ListWrapper<JSON> implements JSON, JSONGetter<Int
|
|||||||
* @param value 值,可以是: Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the JSONNull.NULL。
|
* @param value 值,可以是: Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the JSONNull.NULL。
|
||||||
* @return this.
|
* @return this.
|
||||||
*/
|
*/
|
||||||
public JSONArray addObj(final Object value) {
|
public JSONArray addValue(final Object value) {
|
||||||
// add时,如果value为字符串,不解析,而是作为JSONPrimitive对待
|
// add时,如果value为字符串,不解析,而是作为JSONPrimitive对待
|
||||||
this.add(this.factory.getMapper().toJSON(value, false));
|
this.add(this.factory.getMapper().toJSON(value, false));
|
||||||
return this;
|
return this;
|
||||||
@ -138,7 +138,7 @@ public class JSONArray extends ListWrapper<JSON> implements JSON, JSONGetter<Int
|
|||||||
}
|
}
|
||||||
final JSONObject jo = this.factory.ofObj();
|
final JSONObject jo = this.factory.ofObj();
|
||||||
for (int i = 0; i < names.size(); i += 1) {
|
for (int i = 0; i < names.size(); i += 1) {
|
||||||
jo.putObj(names.getStr(i), this.getObj(i));
|
jo.putValue(names.getStr(i), this.getObj(i));
|
||||||
}
|
}
|
||||||
return jo;
|
return jo;
|
||||||
}
|
}
|
||||||
@ -171,7 +171,7 @@ public class JSONArray extends ListWrapper<JSON> implements JSON, JSONGetter<Int
|
|||||||
* @param element 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
|
* @param element 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
|
||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
public JSONArray setObj(final int index, final Object element) {
|
public JSONArray setValue(final int index, final Object element) {
|
||||||
// set时,如果value为字符串,不解析,而是作为JSONPrimitive对待
|
// set时,如果value为字符串,不解析,而是作为JSONPrimitive对待
|
||||||
set(index, this.factory.getMapper().toJSON(element, false));
|
set(index, this.factory.getMapper().toJSON(element, false));
|
||||||
return this;
|
return this;
|
||||||
|
@ -65,9 +65,9 @@ public class JSONConfig implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private boolean stripTrailingZeros = true;
|
private boolean stripTrailingZeros = true;
|
||||||
/**
|
/**
|
||||||
* 是否检查重复key
|
* 重复key的put策略
|
||||||
*/
|
*/
|
||||||
private boolean checkDuplicate;
|
private DuplicateMode duplicateMode = DuplicateMode.OVERRIDE;
|
||||||
/**
|
/**
|
||||||
* Number写出模式
|
* Number写出模式
|
||||||
*/
|
*/
|
||||||
@ -247,24 +247,22 @@ public class JSONConfig implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否检查多个相同的key
|
* 获取key重复策略
|
||||||
*
|
*
|
||||||
* @return 是否检查多个相同的key
|
* @return key重复策略
|
||||||
* @since 5.8.5
|
|
||||||
*/
|
*/
|
||||||
public boolean isCheckDuplicate() {
|
public DuplicateMode getDuplicateMode() {
|
||||||
return checkDuplicate;
|
return duplicateMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否检查多个相同的key
|
* 设置key重复策略
|
||||||
*
|
*
|
||||||
* @param checkDuplicate 是否检查多个相同的key
|
* @param duplicateMode key重复策略
|
||||||
* @return this
|
* @return this
|
||||||
* @since 5.8.5
|
|
||||||
*/
|
*/
|
||||||
public JSONConfig setCheckDuplicate(final boolean checkDuplicate) {
|
public JSONConfig set(final DuplicateMode duplicateMode) {
|
||||||
this.checkDuplicate = checkDuplicate;
|
this.duplicateMode = duplicateMode;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,4 +288,23 @@ public class JSONConfig implements Serializable {
|
|||||||
this.numberWriteMode = numberWriteMode;
|
this.numberWriteMode = numberWriteMode;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重复key或重复对象处理方式<br>
|
||||||
|
* 只针对{@link JSONObject},检查在put时key的重复情况
|
||||||
|
*/
|
||||||
|
public enum DuplicateMode {
|
||||||
|
/**
|
||||||
|
* 抛出异常
|
||||||
|
*/
|
||||||
|
THROW,
|
||||||
|
/**
|
||||||
|
* 覆盖
|
||||||
|
*/
|
||||||
|
OVERRIDE,
|
||||||
|
/**
|
||||||
|
* 忽略
|
||||||
|
*/
|
||||||
|
IGNORE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,10 +204,13 @@ public class JSONFactory {
|
|||||||
/**
|
/**
|
||||||
* 创建JSONPrimitive
|
* 创建JSONPrimitive
|
||||||
*
|
*
|
||||||
* @param value 值
|
* @param value 值,{@code null}则返回{@code null}
|
||||||
* @return JSONPrimitive
|
* @return JSONPrimitive
|
||||||
*/
|
*/
|
||||||
public JSONPrimitive ofPrimitive(final Object value) {
|
public JSONPrimitive ofPrimitive(final Object value) {
|
||||||
|
if(null == value){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return new JSONPrimitive(value, this);
|
return new JSONPrimitive(value, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ public class JSONObject extends MapWrapper<String, JSON> implements JSON, JSONGe
|
|||||||
}
|
}
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region ----- put
|
// region ----- increment or append
|
||||||
/**
|
/**
|
||||||
* 对值加一,如果值不存在,赋值1,如果为数字类型,做加一操作
|
* 对值加一,如果值不存在,赋值1,如果为数字类型,做加一操作
|
||||||
*
|
*
|
||||||
@ -155,7 +155,7 @@ public class JSONObject extends MapWrapper<String, JSON> implements JSON, JSONGe
|
|||||||
public JSONObject increment(final String key) throws JSONException {
|
public JSONObject increment(final String key) throws JSONException {
|
||||||
final JSON json = this.get(key);
|
final JSON json = this.get(key);
|
||||||
if(null == json){
|
if(null == json){
|
||||||
return putObj(key, 1);
|
return putValue(key, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(json instanceof JSONPrimitive){
|
if(json instanceof JSONPrimitive){
|
||||||
@ -186,15 +186,17 @@ public class JSONObject extends MapWrapper<String, JSON> implements JSON, JSONGe
|
|||||||
public JSONObject append(final String key, final Object value) throws JSONException {
|
public JSONObject append(final String key, final Object value) throws JSONException {
|
||||||
final Object object = this.getObj(key);
|
final Object object = this.getObj(key);
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
this.putObj(key, value);
|
this.putValue(key, value);
|
||||||
} else if (object instanceof JSONArray) {
|
} else if (object instanceof JSONArray) {
|
||||||
((JSONArray) object).addObj(value);
|
((JSONArray) object).addValue(value);
|
||||||
} else {
|
} else {
|
||||||
this.putObj(key, factory.ofArray().addObj(object).addObj(value));
|
this.putValue(key, factory.ofArray().addValue(object).addValue(value));
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
// endregion
|
||||||
|
|
||||||
|
// region ----- put
|
||||||
/**
|
/**
|
||||||
* 通过lambda批量设置值<br>
|
* 通过lambda批量设置值<br>
|
||||||
* 实际使用时,可以使用getXXX的方法引用来完成键值对的赋值:
|
* 实际使用时,可以使用getXXX的方法引用来完成键值对的赋值:
|
||||||
@ -207,7 +209,7 @@ public class JSONObject extends MapWrapper<String, JSON> implements JSON, JSONGe
|
|||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
public JSONObject putFields(final SerSupplier<?>... fields) {
|
public JSONObject putFields(final SerSupplier<?>... fields) {
|
||||||
Arrays.stream(fields).forEach(f -> putObj(LambdaUtil.getFieldName(f), f.get()));
|
Arrays.stream(fields).forEach(f -> putValue(LambdaUtil.getFieldName(f), f.get()));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,9 +220,9 @@ public class JSONObject extends MapWrapper<String, JSON> implements JSON, JSONGe
|
|||||||
* @return this.
|
* @return this.
|
||||||
* @throws JSONException 值是无穷数字抛出此异常
|
* @throws JSONException 值是无穷数字抛出此异常
|
||||||
*/
|
*/
|
||||||
public JSONObject putAllObj(final Map<?, ?> map) {
|
public JSONObject putAllValue(final Map<?, ?> map) {
|
||||||
if(MapUtil.isNotEmpty(map)){
|
if(MapUtil.isNotEmpty(map)){
|
||||||
map.forEach((key, value) -> putObj(StrUtil.toStringOrNull(key), value));
|
map.forEach((key, value) -> putValue(StrUtil.toStringOrNull(key), value));
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -229,11 +231,11 @@ public class JSONObject extends MapWrapper<String, JSON> implements JSON, JSONGe
|
|||||||
* 设置键值对到JSONObject中,在忽略null模式下,如果值为{@code null},将此键移除
|
* 设置键值对到JSONObject中,在忽略null模式下,如果值为{@code null},将此键移除
|
||||||
*
|
*
|
||||||
* @param key 键
|
* @param key 键
|
||||||
* @param value 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
|
* @param value 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the {@code null}
|
||||||
* @return this.
|
* @return this.
|
||||||
* @throws JSONException 值是无穷数字抛出此异常
|
* @throws JSONException 值是无穷数字抛出此异常
|
||||||
*/
|
*/
|
||||||
public JSONObject putObj(final String key, final Object value) throws JSONException {
|
public JSONObject putValue(final String key, final Object value) throws JSONException {
|
||||||
// put时,如果value为字符串,不解析,而是作为JSONPrimitive对待
|
// put时,如果value为字符串,不解析,而是作为JSONPrimitive对待
|
||||||
this.put(key, factory.getMapper().toJSON(value, false));
|
this.put(key, factory.getMapper().toJSON(value, false));
|
||||||
return this;
|
return this;
|
||||||
@ -253,11 +255,17 @@ public class JSONObject extends MapWrapper<String, JSON> implements JSON, JSONGe
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean ignoreNullValue = config().isIgnoreNullValue();
|
final JSONConfig config = config();
|
||||||
if (null == value && ignoreNullValue) {
|
if (null == value && config.isIgnoreNullValue()) {
|
||||||
// 忽略值模式下如果值为空清除key
|
// 忽略值模式下如果值为空清除key
|
||||||
return this.remove(key);
|
return this.remove(key);
|
||||||
} else if (config().isCheckDuplicate() && containsKey(key)) {
|
}
|
||||||
|
|
||||||
|
final JSONConfig.DuplicateMode duplicateMode = config.getDuplicateMode();
|
||||||
|
if (JSONConfig.DuplicateMode.OVERRIDE != duplicateMode && containsKey(key)) {
|
||||||
|
if(JSONConfig.DuplicateMode.IGNORE == duplicateMode){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
throw new JSONException("Duplicate key \"{}\"", key);
|
throw new JSONException("Duplicate key \"{}\"", key);
|
||||||
}
|
}
|
||||||
return super.put(key, value);
|
return super.put(key, value);
|
||||||
|
@ -55,7 +55,7 @@ public class Claims implements Serializable {
|
|||||||
claimJSON.remove(name);
|
claimJSON.remove(name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
claimJSON.putObj(name, value);
|
claimJSON.putValue(name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -202,7 +202,7 @@ public class JSONParser {
|
|||||||
final MutableEntry<Object, Object> entry = new MutableEntry<>(key, value);
|
final MutableEntry<Object, Object> entry = new MutableEntry<>(key, value);
|
||||||
if (predicate.test(entry)) {
|
if (predicate.test(entry)) {
|
||||||
// 使用修改后的键值对
|
// 使用修改后的键值对
|
||||||
jsonObject.putObj((String) entry.getKey(), entry.getValue());
|
jsonObject.putValue((String) entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
jsonObject.put(key, value);
|
jsonObject.put(key, value);
|
||||||
@ -242,7 +242,7 @@ public class JSONParser {
|
|||||||
final MutableEntry<Object, Object> entry = MutableEntry.of(jsonArray.size(), value);
|
final MutableEntry<Object, Object> entry = MutableEntry.of(jsonArray.size(), value);
|
||||||
if (predicate.test(entry)) {
|
if (predicate.test(entry)) {
|
||||||
// 使用修改后的键值对,用户修改后可能不是JSON,此处使用set,调用mapper转换
|
// 使用修改后的键值对,用户修改后可能不是JSON,此处使用set,调用mapper转换
|
||||||
jsonArray.setObj((Integer) entry.getKey(), entry.getValue());
|
jsonArray.setValue((Integer) entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
jsonArray.add(value);
|
jsonArray.add(value);
|
||||||
|
@ -109,7 +109,7 @@ public class ArrayTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJ
|
|||||||
// 非标准的二进制流,则按照普通数组对待
|
// 非标准的二进制流,则按照普通数组对待
|
||||||
final JSONArray result = context.getOrCreateArray();
|
final JSONArray result = context.getOrCreateArray();
|
||||||
for (final byte b : bytes) {
|
for (final byte b : bytes) {
|
||||||
result.addObj(b);
|
result.addValue(b);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ public class EntryTypeAdapter implements MatcherJSONSerializer<Map.Entry<?, ?>>,
|
|||||||
@Override
|
@Override
|
||||||
public JSON serialize(final Map.Entry<?, ?> bean, final JSONContext context) {
|
public JSON serialize(final Map.Entry<?, ?> bean, final JSONContext context) {
|
||||||
return context.getOrCreateObj()
|
return context.getOrCreateObj()
|
||||||
.putObj(ConvertUtil.toStr(bean.getKey()), bean.getValue());
|
.putValue(ConvertUtil.toStr(bean.getKey()), bean.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -114,7 +114,7 @@ public class IterTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJS
|
|||||||
next = iter.next();
|
next = iter.next();
|
||||||
// 检查循环引用
|
// 检查循环引用
|
||||||
if (next != source) {
|
if (next != source) {
|
||||||
jsonArray.addObj(next);
|
jsonArray.addValue(next);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ public class MapTypeAdapter implements MatcherJSONSerializer<Map<?, ?>>, Matcher
|
|||||||
final JSONObject result = context.getOrCreateObj();
|
final JSONObject result = context.getOrCreateObj();
|
||||||
// 注入键值对
|
// 注入键值对
|
||||||
for (final Map.Entry<?, ?> e : bean.entrySet()) {
|
for (final Map.Entry<?, ?> e : bean.entrySet()) {
|
||||||
result.putObj(StrUtil.toStringOrNull(e.getKey()), e.getValue());
|
result.putValue(StrUtil.toStringOrNull(e.getKey()), e.getValue());
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -87,10 +87,10 @@ public class ResourceBundleSerializer implements MatcherJSONSerializer<ResourceB
|
|||||||
JSONObject nextTarget = target.getJSONObject(segment);
|
JSONObject nextTarget = target.getJSONObject(segment);
|
||||||
if (nextTarget == null) {
|
if (nextTarget == null) {
|
||||||
nextTarget = JSONUtil.ofObj(target.config());
|
nextTarget = JSONUtil.ofObj(target.config());
|
||||||
target.putObj(segment, nextTarget);
|
target.putValue(segment, nextTarget);
|
||||||
}
|
}
|
||||||
target = nextTarget;
|
target = nextTarget;
|
||||||
}
|
}
|
||||||
target.putObj(path[last], value);
|
target.putValue(path[last], value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -136,24 +136,24 @@ public class TemporalTypeAdapter implements MatcherJSONSerializer<TemporalAccess
|
|||||||
private static void toJSONObject(final TemporalAccessor bean, final JSONObject json) {
|
private static void toJSONObject(final TemporalAccessor bean, final JSONObject json) {
|
||||||
if (bean instanceof LocalDate) {
|
if (bean instanceof LocalDate) {
|
||||||
final LocalDate localDate = (LocalDate) bean;
|
final LocalDate localDate = (LocalDate) bean;
|
||||||
json.putObj(YEAR_KEY, localDate.getYear());
|
json.putValue(YEAR_KEY, localDate.getYear());
|
||||||
json.putObj(MONTH_KEY, localDate.getMonthValue());
|
json.putValue(MONTH_KEY, localDate.getMonthValue());
|
||||||
json.putObj(DAY_KEY, localDate.getDayOfMonth());
|
json.putValue(DAY_KEY, localDate.getDayOfMonth());
|
||||||
} else if (bean instanceof LocalDateTime) {
|
} else if (bean instanceof LocalDateTime) {
|
||||||
final LocalDateTime localDateTime = (LocalDateTime) bean;
|
final LocalDateTime localDateTime = (LocalDateTime) bean;
|
||||||
json.putObj(YEAR_KEY, localDateTime.getYear());
|
json.putValue(YEAR_KEY, localDateTime.getYear());
|
||||||
json.putObj(MONTH_KEY, localDateTime.getMonthValue());
|
json.putValue(MONTH_KEY, localDateTime.getMonthValue());
|
||||||
json.putObj(DAY_KEY, localDateTime.getDayOfMonth());
|
json.putValue(DAY_KEY, localDateTime.getDayOfMonth());
|
||||||
json.putObj(HOUR_KEY, localDateTime.getHour());
|
json.putValue(HOUR_KEY, localDateTime.getHour());
|
||||||
json.putObj(MINUTE_KEY, localDateTime.getMinute());
|
json.putValue(MINUTE_KEY, localDateTime.getMinute());
|
||||||
json.putObj(SECOND_KEY, localDateTime.getSecond());
|
json.putValue(SECOND_KEY, localDateTime.getSecond());
|
||||||
json.putObj(NANO_KEY, localDateTime.getNano());
|
json.putValue(NANO_KEY, localDateTime.getNano());
|
||||||
} else if (bean instanceof LocalTime) {
|
} else if (bean instanceof LocalTime) {
|
||||||
final LocalTime localTime = (LocalTime) bean;
|
final LocalTime localTime = (LocalTime) bean;
|
||||||
json.putObj(HOUR_KEY, localTime.getHour());
|
json.putValue(HOUR_KEY, localTime.getHour());
|
||||||
json.putObj(MINUTE_KEY, localTime.getMinute());
|
json.putValue(MINUTE_KEY, localTime.getMinute());
|
||||||
json.putObj(SECOND_KEY, localTime.getSecond());
|
json.putValue(SECOND_KEY, localTime.getSecond());
|
||||||
json.putObj(NANO_KEY, localTime.getNano());
|
json.putValue(NANO_KEY, localTime.getNano());
|
||||||
} else{
|
} else{
|
||||||
throw new JSONException("Unsupported type: {}", bean.getClass().getName());
|
throw new JSONException("Unsupported type: {}", bean.getClass().getName());
|
||||||
}
|
}
|
||||||
|
@ -84,10 +84,10 @@ public class BeanToJSONCopier implements Copier<JSONObject> {
|
|||||||
final MutableEntry<Object, Object> entry = new MutableEntry<>(fieldName, sValue);
|
final MutableEntry<Object, Object> entry = new MutableEntry<>(fieldName, sValue);
|
||||||
if (predicate.test(entry)) {
|
if (predicate.test(entry)) {
|
||||||
// 使用修改后的键值对
|
// 使用修改后的键值对
|
||||||
target.putObj((String) entry.getKey(), entry.getValue());
|
target.putValue((String) entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
} else if (null != sValue || !ignoreNullValue) {
|
} else if (null != sValue || !ignoreNullValue) {
|
||||||
target.putObj(fieldName, sValue);
|
target.putValue(fieldName, sValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,9 +82,9 @@ public class JSONNodeBeanFactory implements NodeBeanFactory<JSON> {
|
|||||||
return bean;
|
return bean;
|
||||||
} else if (node instanceof NameNode) {
|
} else if (node instanceof NameNode) {
|
||||||
if(bean instanceof JSONObject){
|
if(bean instanceof JSONObject){
|
||||||
((JSONObject) bean).putObj(((NameNode) node).getName(), value);
|
((JSONObject) bean).putValue(((NameNode) node).getName(), value);
|
||||||
} else if(bean instanceof JSONArray){
|
} else if(bean instanceof JSONArray){
|
||||||
((JSONArray) bean).setObj(Integer.parseInt(((NameNode) node).getName()), value);
|
((JSONArray) bean).setValue(Integer.parseInt(((NameNode) node).getName()), value);
|
||||||
}
|
}
|
||||||
return bean;
|
return bean;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ public class JSONArrayTest {
|
|||||||
JSONArray jsonArray = JSONUtil.parseArray(jsonObject);
|
JSONArray jsonArray = JSONUtil.parseArray(jsonObject);
|
||||||
assertEquals(new JSONArray(), jsonArray);
|
assertEquals(new JSONArray(), jsonArray);
|
||||||
|
|
||||||
jsonObject.putObj("key1", "value1");
|
jsonObject.putValue("key1", "value1");
|
||||||
jsonArray = JSONUtil.parseArray(jsonObject, JSONConfig.of());
|
jsonArray = JSONUtil.parseArray(jsonObject, JSONConfig.of());
|
||||||
assertEquals(1, jsonArray.size());
|
assertEquals(1, jsonArray.size());
|
||||||
assertEquals("[{\"key1\":\"value1\"}]", jsonArray.toString());
|
assertEquals("[{\"key1\":\"value1\"}]", jsonArray.toString());
|
||||||
@ -70,9 +70,9 @@ public class JSONArrayTest {
|
|||||||
final JSONArray array = JSONUtil.ofArray();
|
final JSONArray array = JSONUtil.ofArray();
|
||||||
// 方法2
|
// 方法2
|
||||||
// JSONArray array = new JSONArray();
|
// JSONArray array = new JSONArray();
|
||||||
array.addObj("value1");
|
array.addValue("value1");
|
||||||
array.addObj("value2");
|
array.addValue("value2");
|
||||||
array.addObj("value3");
|
array.addValue("value3");
|
||||||
|
|
||||||
assertEquals(array.getObj(0), "value1");
|
assertEquals(array.getObj(0), "value1");
|
||||||
}
|
}
|
||||||
@ -240,12 +240,12 @@ public class JSONArrayTest {
|
|||||||
@Test
|
@Test
|
||||||
public void putToIndexTest() {
|
public void putToIndexTest() {
|
||||||
JSONArray jsonArray = new JSONArray();
|
JSONArray jsonArray = new JSONArray();
|
||||||
jsonArray.setObj(3, "test");
|
jsonArray.setValue(3, "test");
|
||||||
// 默认忽略null值,因此空位无值,只有一个值
|
// 默认忽略null值,因此空位无值,只有一个值
|
||||||
assertEquals(1, jsonArray.size());
|
assertEquals(1, jsonArray.size());
|
||||||
|
|
||||||
jsonArray = new JSONArray(JSONConfig.of().setIgnoreNullValue(false));
|
jsonArray = new JSONArray(JSONConfig.of().setIgnoreNullValue(false));
|
||||||
jsonArray.setObj(2, "test");
|
jsonArray.setValue(2, "test");
|
||||||
// 第三个位置插入值,0~2都是null
|
// 第三个位置插入值,0~2都是null
|
||||||
assertEquals(3, jsonArray.size());
|
assertEquals(3, jsonArray.size());
|
||||||
}
|
}
|
||||||
@ -254,7 +254,7 @@ public class JSONArrayTest {
|
|||||||
@Test
|
@Test
|
||||||
public void putTest2() {
|
public void putTest2() {
|
||||||
final JSONArray jsonArray = new JSONArray();
|
final JSONArray jsonArray = new JSONArray();
|
||||||
jsonArray.setObj(0, 1);
|
jsonArray.setValue(0, 1);
|
||||||
assertEquals(1, jsonArray.size());
|
assertEquals(1, jsonArray.size());
|
||||||
assertEquals(1, jsonArray.getObj(0));
|
assertEquals(1, jsonArray.getObj(0));
|
||||||
}
|
}
|
||||||
@ -276,10 +276,10 @@ public class JSONArrayTest {
|
|||||||
@Test
|
@Test
|
||||||
public void filterIncludeTest() {
|
public void filterIncludeTest() {
|
||||||
final JSONArray json1 = JSONUtil.ofArray()
|
final JSONArray json1 = JSONUtil.ofArray()
|
||||||
.addObj("value1")
|
.addValue("value1")
|
||||||
.addObj("value2")
|
.addValue("value2")
|
||||||
.addObj("value3")
|
.addValue("value3")
|
||||||
.addObj(true);
|
.addValue(true);
|
||||||
|
|
||||||
final String s = json1.toJSONString(0, (pair) -> ((JSONPrimitive)pair.getValue()).getValue().equals("value2"));
|
final String s = json1.toJSONString(0, (pair) -> ((JSONPrimitive)pair.getValue()).getValue().equals("value2"));
|
||||||
assertEquals("[\"value2\"]", s);
|
assertEquals("[\"value2\"]", s);
|
||||||
@ -288,10 +288,10 @@ public class JSONArrayTest {
|
|||||||
@Test
|
@Test
|
||||||
public void filterExcludeTest() {
|
public void filterExcludeTest() {
|
||||||
final JSONArray json1 = JSONUtil.ofArray()
|
final JSONArray json1 = JSONUtil.ofArray()
|
||||||
.addObj("value1")
|
.addValue("value1")
|
||||||
.addObj("value2")
|
.addValue("value2")
|
||||||
.addObj("value3")
|
.addValue("value3")
|
||||||
.addObj(true);
|
.addValue(true);
|
||||||
|
|
||||||
final String s = json1.toJSONString(0, (pair) -> !((JSONPrimitive)pair.getValue()).getValue().equals("value2"));
|
final String s = json1.toJSONString(0, (pair) -> !((JSONPrimitive)pair.getValue()).getValue().equals("value2"));
|
||||||
assertEquals("[\"value1\",\"value3\",true]", s);
|
assertEquals("[\"value1\",\"value3\",true]", s);
|
||||||
@ -300,7 +300,7 @@ public class JSONArrayTest {
|
|||||||
@Test
|
@Test
|
||||||
public void putNullTest() {
|
public void putNullTest() {
|
||||||
final JSONArray array = JSONUtil.ofArray(JSONConfig.of().setIgnoreNullValue(false));
|
final JSONArray array = JSONUtil.ofArray(JSONConfig.of().setIgnoreNullValue(false));
|
||||||
array.addObj(null);
|
array.addValue(null);
|
||||||
|
|
||||||
assertEquals("[null]", array.toString());
|
assertEquals("[null]", array.toString());
|
||||||
}
|
}
|
||||||
@ -322,7 +322,7 @@ public class JSONArrayTest {
|
|||||||
if(mutable.getKey() instanceof Integer){
|
if(mutable.getKey() instanceof Integer){
|
||||||
final JSONObject o = (JSONObject) mutable.getValue();
|
final JSONObject o = (JSONObject) mutable.getValue();
|
||||||
if ("111".equals(o.getStr("id"))) {
|
if ("111".equals(o.getStr("id"))) {
|
||||||
o.putObj("name", "test1_edit");
|
o.putValue("name", "test1_edit");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -335,9 +335,9 @@ public class JSONArrayTest {
|
|||||||
@Test
|
@Test
|
||||||
void jsonIterTest() {
|
void jsonIterTest() {
|
||||||
final JSONArray array = JSONUtil.ofArray();
|
final JSONArray array = JSONUtil.ofArray();
|
||||||
array.add(JSONUtil.ofObj().putObj("name", "aaa"));
|
array.add(JSONUtil.ofObj().putValue("name", "aaa"));
|
||||||
array.add(JSONUtil.ofObj().putObj("name", "bbb"));
|
array.add(JSONUtil.ofObj().putValue("name", "bbb"));
|
||||||
array.add(JSONUtil.ofObj().putObj("name", "ccc"));
|
array.add(JSONUtil.ofObj().putValue("name", "ccc"));
|
||||||
|
|
||||||
final StringBuilder result = new StringBuilder();
|
final StringBuilder result = new StringBuilder();
|
||||||
array.forEach(result::append);
|
array.forEach(result::append);
|
||||||
|
@ -51,22 +51,22 @@ public class JSONNullTest {
|
|||||||
@Test
|
@Test
|
||||||
public void setNullTest(){
|
public void setNullTest(){
|
||||||
// 忽略null
|
// 忽略null
|
||||||
String json1 = JSONUtil.ofObj().putObj("key1", null).toString();
|
String json1 = JSONUtil.ofObj().putValue("key1", null).toString();
|
||||||
Assertions.assertEquals("{}", json1);
|
Assertions.assertEquals("{}", json1);
|
||||||
|
|
||||||
// 不忽略null
|
// 不忽略null
|
||||||
json1 = JSONUtil.ofObj(JSONConfig.of().setIgnoreNullValue(false)).putObj("key1", null).toString();
|
json1 = JSONUtil.ofObj(JSONConfig.of().setIgnoreNullValue(false)).putValue("key1", null).toString();
|
||||||
Assertions.assertEquals("{\"key1\":null}", json1);
|
Assertions.assertEquals("{\"key1\":null}", json1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setNullOfJSONArrayTest(){
|
public void setNullOfJSONArrayTest(){
|
||||||
// 忽略null
|
// 忽略null
|
||||||
String json1 = JSONUtil.ofArray().addObj(null).toString();
|
String json1 = JSONUtil.ofArray().addValue(null).toString();
|
||||||
Assertions.assertEquals("[]", json1);
|
Assertions.assertEquals("[]", json1);
|
||||||
|
|
||||||
// 不忽略null
|
// 不忽略null
|
||||||
json1 = JSONUtil.ofArray(JSONConfig.of().setIgnoreNullValue(false)).addObj(null).toString();
|
json1 = JSONUtil.ofArray(JSONConfig.of().setIgnoreNullValue(false)).addValue(null).toString();
|
||||||
Assertions.assertEquals("[null]", json1);
|
Assertions.assertEquals("[null]", json1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,18 +75,18 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void toStringTest3() {
|
public void toStringTest3() {
|
||||||
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DatePattern.NORM_DATE_PATTERN))//
|
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DatePattern.NORM_DATE_PATTERN))//
|
||||||
.putObj("dateTime", DateUtil.parse("2019-05-02 22:12:01"));
|
.putValue("dateTime", DateUtil.parse("2019-05-02 22:12:01"));
|
||||||
assertEquals("{\"dateTime\":\"2019-05-02\"}", json.toString());
|
assertEquals("{\"dateTime\":\"2019-05-02\"}", json.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toStringWithDateTest() {
|
public void toStringWithDateTest() {
|
||||||
JSONObject json = JSONUtil.ofObj().putObj("date", DateUtil.parse("2019-05-08 19:18:21"));
|
JSONObject json = JSONUtil.ofObj().putValue("date", DateUtil.parse("2019-05-08 19:18:21"));
|
||||||
assert json != null;
|
assert json != null;
|
||||||
assertEquals("{\"date\":1557314301000}", json.toString());
|
assertEquals("{\"date\":1557314301000}", json.toString());
|
||||||
|
|
||||||
json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DatePattern.NORM_DATE_PATTERN))
|
json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DatePattern.NORM_DATE_PATTERN))
|
||||||
.putObj("date", DateUtil.parse("2019-05-08 19:18:21"));
|
.putValue("date", DateUtil.parse("2019-05-08 19:18:21"));
|
||||||
assertEquals("{\"date\":\"2019-05-08\"}", json.toString());
|
assertEquals("{\"date\":\"2019-05-08\"}", json.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,14 +94,14 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void putAllTest() {
|
public void putAllTest() {
|
||||||
final JSONObject json1 = JSONUtil.ofObj()
|
final JSONObject json1 = JSONUtil.ofObj()
|
||||||
.putObj("a", "value1")
|
.putValue("a", "value1")
|
||||||
.putObj("b", "value2")
|
.putValue("b", "value2")
|
||||||
.putObj("c", "value3")
|
.putValue("c", "value3")
|
||||||
.putObj("d", true);
|
.putValue("d", true);
|
||||||
|
|
||||||
final JSONObject json2 = JSONUtil.ofObj()
|
final JSONObject json2 = JSONUtil.ofObj()
|
||||||
.putObj("a", "value21")
|
.putValue("a", "value21")
|
||||||
.putObj("b", "value22");
|
.putValue("b", "value22");
|
||||||
|
|
||||||
// putAll操作会覆盖相同key的值,因此a,b两个key的值改变,c的值不变
|
// putAll操作会覆盖相同key的值,因此a,b两个key的值改变,c的值不变
|
||||||
json1.putAll(json2);
|
json1.putAll(json2);
|
||||||
@ -193,12 +193,12 @@ public class JSONObjectTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toBeanTest() {
|
public void toBeanTest() {
|
||||||
final JSONObject subJson = JSONUtil.ofObj().putObj("value1", "strValue1").putObj("value2", "234");
|
final JSONObject subJson = JSONUtil.ofObj().putValue("value1", "strValue1").putValue("value2", "234");
|
||||||
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setIgnoreError(true)).putObj("strValue", "strTest").putObj("intValue", 123)
|
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setIgnoreError(true)).putValue("strValue", "strTest").putValue("intValue", 123)
|
||||||
// 测试空字符串转对象
|
// 测试空字符串转对象
|
||||||
.putObj("doubleValue", "")
|
.putValue("doubleValue", "")
|
||||||
.putObj("beanValue", subJson)
|
.putValue("beanValue", subJson)
|
||||||
.putObj("list", JSONUtil.ofArray().addObj("a").addObj("b")).putObj("testEnum", "TYPE_A");
|
.putValue("list", JSONUtil.ofArray().addValue("a").addValue("b")).putValue("testEnum", "TYPE_A");
|
||||||
|
|
||||||
final TestBean bean = json.toBean(TestBean.class);
|
final TestBean bean = json.toBean(TestBean.class);
|
||||||
assertEquals("a", bean.getList().get(0));
|
assertEquals("a", bean.getList().get(0));
|
||||||
@ -214,11 +214,11 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void toBeanNullStrTest() {
|
public void toBeanNullStrTest() {
|
||||||
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setIgnoreError(true))//
|
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setIgnoreError(true))//
|
||||||
.putObj("strValue", "null")//
|
.putValue("strValue", "null")//
|
||||||
.putObj("intValue", 123)//
|
.putValue("intValue", 123)//
|
||||||
// 子对象对应"null"字符串,如果忽略错误,跳过,否则抛出转换异常
|
// 子对象对应"null"字符串,如果忽略错误,跳过,否则抛出转换异常
|
||||||
.putObj("beanValue", "null")//
|
.putValue("beanValue", "null")//
|
||||||
.putObj("list", JSONUtil.ofArray().addObj("a").addObj("b"));
|
.putValue("list", JSONUtil.ofArray().addValue("a").addValue("b"));
|
||||||
|
|
||||||
final TestBean bean = json.toBean(TestBean.class);
|
final TestBean bean = json.toBean(TestBean.class);
|
||||||
// 当JSON中为字符串"null"时应被当作字符串处理
|
// 当JSON中为字符串"null"时应被当作字符串处理
|
||||||
@ -230,7 +230,7 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
void addListTest(){
|
void addListTest(){
|
||||||
final JSONObject json = JSONUtil.ofObj();
|
final JSONObject json = JSONUtil.ofObj();
|
||||||
json.putObj("list", ListUtil.of(1, 2, 3));
|
json.putValue("list", ListUtil.of(1, 2, 3));
|
||||||
Assertions.assertEquals("{\"list\":[1,2,3]}", json.toString());
|
Assertions.assertEquals("{\"list\":[1,2,3]}", json.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,11 +288,11 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void toBeanTest6() {
|
public void toBeanTest6() {
|
||||||
final JSONObject json = JSONUtil.ofObj()
|
final JSONObject json = JSONUtil.ofObj()
|
||||||
.putObj("targetUrl", "http://test.com")
|
.putValue("targetUrl", "http://test.com")
|
||||||
.putObj("success", "true")
|
.putValue("success", "true")
|
||||||
.putObj("result", JSONUtil.ofObj()
|
.putValue("result", JSONUtil.ofObj()
|
||||||
.putObj("token", "tokenTest")
|
.putValue("token", "tokenTest")
|
||||||
.putObj("userId", "测试用户1"));
|
.putValue("userId", "测试用户1"));
|
||||||
|
|
||||||
final TokenAuthWarp2 bean = json.toBean(TokenAuthWarp2.class);
|
final TokenAuthWarp2 bean = json.toBean(TokenAuthWarp2.class);
|
||||||
assertEquals("http://test.com", bean.getTargetUrl());
|
assertEquals("http://test.com", bean.getTargetUrl());
|
||||||
@ -353,8 +353,8 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void parseBeanTest3() {
|
public void parseBeanTest3() {
|
||||||
final JSONObject json = JSONUtil.ofObj()
|
final JSONObject json = JSONUtil.ofObj()
|
||||||
.putObj("code", 22)
|
.putValue("code", 22)
|
||||||
.putObj("data", "{\"jobId\": \"abc\", \"videoUrl\": \"http://a.com/a.mp4\"}");
|
.putValue("data", "{\"jobId\": \"abc\", \"videoUrl\": \"http://a.com/a.mp4\"}");
|
||||||
|
|
||||||
final JSONBean bean = json.toBean(JSONBean.class);
|
final JSONBean bean = json.toBean(JSONBean.class);
|
||||||
assertEquals(22, bean.getCode());
|
assertEquals(22, bean.getCode());
|
||||||
@ -393,9 +393,9 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void beanTransTest3() {
|
public void beanTransTest3() {
|
||||||
final JSONObject userAJson = JSONUtil.ofObj()
|
final JSONObject userAJson = JSONUtil.ofObj()
|
||||||
.putObj("a", "AValue")
|
.putValue("a", "AValue")
|
||||||
.putObj("name", "nameValue")
|
.putValue("name", "nameValue")
|
||||||
.putObj("date", "08:00:00");
|
.putValue("date", "08:00:00");
|
||||||
final UserA bean = JSONUtil.toBean(userAJson.toString(), UserA.class);
|
final UserA bean = JSONUtil.toBean(userAJson.toString(), UserA.class);
|
||||||
assertEquals(DateUtil.formatToday() + " 08:00:00", DateUtil.date(bean.getDate()).toString());
|
assertEquals(DateUtil.formatToday() + " 08:00:00", DateUtil.date(bean.getDate()).toString());
|
||||||
}
|
}
|
||||||
@ -449,8 +449,8 @@ public class JSONObjectTest {
|
|||||||
assertEquals(Integer.valueOf(35), jsonObject.getInt("age"));
|
assertEquals(Integer.valueOf(35), jsonObject.getInt("age"));
|
||||||
|
|
||||||
final JSONObject json = JSONUtil.ofObj()
|
final JSONObject json = JSONUtil.ofObj()
|
||||||
.putObj("name", "张三")
|
.putValue("name", "张三")
|
||||||
.putObj("age", 35);
|
.putValue("age", 35);
|
||||||
final BeanWithAlias bean = JSONUtil.toBean(Objects.requireNonNull(json).toString(), BeanWithAlias.class);
|
final BeanWithAlias bean = JSONUtil.toBean(Objects.requireNonNull(json).toString(), BeanWithAlias.class);
|
||||||
assertEquals("张三", bean.getValue1());
|
assertEquals("张三", bean.getValue1());
|
||||||
assertEquals(Integer.valueOf(35), bean.getValue2());
|
assertEquals(Integer.valueOf(35), bean.getValue2());
|
||||||
@ -475,9 +475,9 @@ public class JSONObjectTest {
|
|||||||
|
|
||||||
final Date date = DateUtil.parse("2020-06-05 11:16:11");
|
final Date date = DateUtil.parse("2020-06-05 11:16:11");
|
||||||
final JSONObject json = new JSONObject(jsonConfig);
|
final JSONObject json = new JSONObject(jsonConfig);
|
||||||
json.putObj("date", date);
|
json.putValue("date", date);
|
||||||
json.putObj("bbb", "222");
|
json.putValue("bbb", "222");
|
||||||
json.putObj("aaa", "123");
|
json.putValue("aaa", "123");
|
||||||
|
|
||||||
final String jsonStr = "{\"date\":\"2020#06#05\",\"bbb\":\"222\",\"aaa\":\"123\"}";
|
final String jsonStr = "{\"date\":\"2020#06#05\",\"bbb\":\"222\",\"aaa\":\"123\"}";
|
||||||
|
|
||||||
@ -495,7 +495,7 @@ public class JSONObjectTest {
|
|||||||
|
|
||||||
final Date date = DateUtil.parse("2020-06-05 11:16:11");
|
final Date date = DateUtil.parse("2020-06-05 11:16:11");
|
||||||
final JSONObject json = new JSONObject(jsonConfig);
|
final JSONObject json = new JSONObject(jsonConfig);
|
||||||
json.putObj("date", date);
|
json.putValue("date", date);
|
||||||
|
|
||||||
assertEquals("{\"date\":1591326971}", json.toString());
|
assertEquals("{\"date\":1591326971}", json.toString());
|
||||||
|
|
||||||
@ -511,9 +511,9 @@ public class JSONObjectTest {
|
|||||||
|
|
||||||
final Date date = DateUtil.parse("2020-06-05 11:16:11");
|
final Date date = DateUtil.parse("2020-06-05 11:16:11");
|
||||||
final JSONObject json = new JSONObject(jsonConfig);
|
final JSONObject json = new JSONObject(jsonConfig);
|
||||||
json.putObj("date", date);
|
json.putValue("date", date);
|
||||||
json.putObj("bbb", "222");
|
json.putValue("bbb", "222");
|
||||||
json.putObj("aaa", "123");
|
json.putValue("aaa", "123");
|
||||||
|
|
||||||
final String jsonStr = "{\"date\":1591326971,\"bbb\":\"222\",\"aaa\":\"123\"}";
|
final String jsonStr = "{\"date\":1591326971,\"bbb\":\"222\",\"aaa\":\"123\"}";
|
||||||
|
|
||||||
@ -527,7 +527,7 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getTimestampTest() {
|
public void getTimestampTest() {
|
||||||
final String timeStr = "1970-01-01 00:00:00";
|
final String timeStr = "1970-01-01 00:00:00";
|
||||||
final JSONObject jsonObject = JSONUtil.ofObj().putObj("time", timeStr);
|
final JSONObject jsonObject = JSONUtil.ofObj().putValue("time", timeStr);
|
||||||
final Timestamp time = jsonObject.get("time", Timestamp.class);
|
final Timestamp time = jsonObject.get("time", Timestamp.class);
|
||||||
assertEquals("1970-01-01 00:00:00.0", time.toString());
|
assertEquals("1970-01-01 00:00:00.0", time.toString());
|
||||||
}
|
}
|
||||||
@ -670,10 +670,10 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void filterIncludeTest() {
|
public void filterIncludeTest() {
|
||||||
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
||||||
.putObj("a", "value1")
|
.putValue("a", "value1")
|
||||||
.putObj("b", "value2")
|
.putValue("b", "value2")
|
||||||
.putObj("c", "value3")
|
.putValue("c", "value3")
|
||||||
.putObj("d", true);
|
.putValue("d", true);
|
||||||
|
|
||||||
final String s = json1.toJSONString(0, (pair) -> pair.getKey().equals("b"));
|
final String s = json1.toJSONString(0, (pair) -> pair.getKey().equals("b"));
|
||||||
assertEquals("{\"b\":\"value2\"}", s);
|
assertEquals("{\"b\":\"value2\"}", s);
|
||||||
@ -682,10 +682,10 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void filterExcludeTest() {
|
public void filterExcludeTest() {
|
||||||
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
||||||
.putObj("a", "value1")
|
.putValue("a", "value1")
|
||||||
.putObj("b", "value2")
|
.putValue("b", "value2")
|
||||||
.putObj("c", "value3")
|
.putValue("c", "value3")
|
||||||
.putObj("d", true);
|
.putValue("d", true);
|
||||||
|
|
||||||
final String s = json1.toJSONString(0, (pair) -> !pair.getKey().equals("b"));
|
final String s = json1.toJSONString(0, (pair) -> !pair.getKey().equals("b"));
|
||||||
assertEquals("{\"a\":\"value1\",\"c\":\"value3\",\"d\":true}", s);
|
assertEquals("{\"a\":\"value1\",\"c\":\"value3\",\"d\":true}", s);
|
||||||
@ -694,10 +694,10 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void editTest() {
|
public void editTest() {
|
||||||
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
||||||
.putObj("a", "value1")
|
.putValue("a", "value1")
|
||||||
.putObj("b", "value2")
|
.putValue("b", "value2")
|
||||||
.putObj("c", "value3")
|
.putValue("c", "value3")
|
||||||
.putObj("d", true);
|
.putValue("d", true);
|
||||||
|
|
||||||
final String s = json1.toJSONString(0, (pair) -> {
|
final String s = json1.toJSONString(0, (pair) -> {
|
||||||
if ("b".equals(pair.getKey())) {
|
if ("b".equals(pair.getKey())) {
|
||||||
@ -715,10 +715,10 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void toUnderLineCaseTest() {
|
public void toUnderLineCaseTest() {
|
||||||
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of())
|
||||||
.putObj("aKey", "value1")
|
.putValue("aKey", "value1")
|
||||||
.putObj("bJob", "value2")
|
.putValue("bJob", "value2")
|
||||||
.putObj("cGood", "value3")
|
.putValue("cGood", "value3")
|
||||||
.putObj("d", true);
|
.putValue("d", true);
|
||||||
|
|
||||||
final String s = json1.toJSONString(0, (pair) -> {
|
final String s = json1.toJSONString(0, (pair) -> {
|
||||||
pair.setKey(StrUtil.toUnderlineCase((String)pair.getKey()));
|
pair.setKey(StrUtil.toUnderlineCase((String)pair.getKey()));
|
||||||
@ -730,8 +730,8 @@ public class JSONObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void nullToEmptyTest() {
|
public void nullToEmptyTest() {
|
||||||
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of().setIgnoreNullValue(false))
|
final JSONObject json1 = JSONUtil.ofObj(JSONConfig.of().setIgnoreNullValue(false))
|
||||||
.putObj("a", null)
|
.putValue("a", null)
|
||||||
.putObj("b", "value2");
|
.putValue("b", "value2");
|
||||||
|
|
||||||
final String s = json1.toJSONString(0, (pair) -> {
|
final String s = json1.toJSONString(0, (pair) -> {
|
||||||
pair.setValue(ObjUtil.defaultIfNull(pair.getValue(), StrUtil.EMPTY));
|
pair.setValue(ObjUtil.defaultIfNull(pair.getValue(), StrUtil.EMPTY));
|
||||||
|
@ -186,9 +186,9 @@ public class JSONUtilTest {
|
|||||||
public void toJsonStrTest3() {
|
public void toJsonStrTest3() {
|
||||||
// 验证某个字段为JSON字符串时转义是否规范
|
// 验证某个字段为JSON字符串时转义是否规范
|
||||||
final JSONObject object = new JSONObject(JSONConfig.of().setIgnoreError(true));
|
final JSONObject object = new JSONObject(JSONConfig.of().setIgnoreError(true));
|
||||||
object.putObj("name", "123123");
|
object.putValue("name", "123123");
|
||||||
object.putObj("value", "\\");
|
object.putValue("value", "\\");
|
||||||
object.putObj("value2", "</");
|
object.putValue("value2", "</");
|
||||||
|
|
||||||
final HashMap<String, String> map = MapUtil.newHashMap();
|
final HashMap<String, String> map = MapUtil.newHashMap();
|
||||||
map.put("user", object.toString());
|
map.put("user", object.toString());
|
||||||
@ -277,12 +277,12 @@ public class JSONUtilTest {
|
|||||||
public void setStripTrailingZerosTest() {
|
public void setStripTrailingZerosTest() {
|
||||||
// 默认去除多余的0
|
// 默认去除多余的0
|
||||||
final JSONObject jsonObjectDefault = JSONUtil.ofObj()
|
final JSONObject jsonObjectDefault = JSONUtil.ofObj()
|
||||||
.putObj("test2", 12.00D);
|
.putValue("test2", 12.00D);
|
||||||
assertEquals("{\"test2\":12}", jsonObjectDefault.toString());
|
assertEquals("{\"test2\":12}", jsonObjectDefault.toString());
|
||||||
|
|
||||||
// 不去除多余的0
|
// 不去除多余的0
|
||||||
final JSONObject jsonObject = JSONUtil.ofObj(JSONConfig.of().setStripTrailingZeros(false))
|
final JSONObject jsonObject = JSONUtil.ofObj(JSONConfig.of().setStripTrailingZeros(false))
|
||||||
.putObj("test2", 12.00D);
|
.putValue("test2", 12.00D);
|
||||||
assertEquals("{\"test2\":12.0}", jsonObject.toString());
|
assertEquals("{\"test2\":12.0}", jsonObject.toString());
|
||||||
|
|
||||||
// 去除多余的0
|
// 去除多余的0
|
||||||
@ -304,7 +304,7 @@ public class JSONUtilTest {
|
|||||||
public void sqlExceptionTest() {
|
public void sqlExceptionTest() {
|
||||||
//https://github.com/dromara/hutool/issues/1399
|
//https://github.com/dromara/hutool/issues/1399
|
||||||
// SQLException实现了Iterable接口,默认是遍历之,会栈溢出,修正后只返回string
|
// SQLException实现了Iterable接口,默认是遍历之,会栈溢出,修正后只返回string
|
||||||
final JSONObject set = JSONUtil.ofObj().putObj("test", new SQLException("test"));
|
final JSONObject set = JSONUtil.ofObj().putValue("test", new SQLException("test"));
|
||||||
assertEquals("{\"test\":\"java.sql.SQLException: test\"}", set.toString());
|
assertEquals("{\"test\":\"java.sql.SQLException: test\"}", set.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,8 +318,8 @@ public class JSONUtilTest {
|
|||||||
@Test
|
@Test
|
||||||
public void toXmlTest() {
|
public void toXmlTest() {
|
||||||
final JSONObject obj = JSONUtil.ofObj();
|
final JSONObject obj = JSONUtil.ofObj();
|
||||||
obj.putObj("key1", "v1")
|
obj.putValue("key1", "v1")
|
||||||
.putObj("key2", ListUtil.view("a", "b", "c"));
|
.putValue("key2", ListUtil.view("a", "b", "c"));
|
||||||
final String xmlStr = JSONUtil.toXmlStr(obj);
|
final String xmlStr = JSONUtil.toXmlStr(obj);
|
||||||
assertEquals("<key1>v1</key1><key2>a</key2><key2>b</key2><key2>c</key2>", xmlStr);
|
assertEquals("<key1>v1</key1><key2>a</key2><key2>b</key2><key2>c</key2>", xmlStr);
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ public class JSONWriterTest {
|
|||||||
@Test
|
@Test
|
||||||
public void writeDateTest() {
|
public void writeDateTest() {
|
||||||
final JSONObject jsonObject = JSONUtil.ofObj(JSONConfig.of().setDateFormat("yyyy-MM-dd"))
|
final JSONObject jsonObject = JSONUtil.ofObj(JSONConfig.of().setDateFormat("yyyy-MM-dd"))
|
||||||
.putObj("date", DateUtil.parse("2022-09-30"));
|
.putValue("date", DateUtil.parse("2022-09-30"));
|
||||||
|
|
||||||
// 日期原样写入
|
// 日期原样写入
|
||||||
final Date date = jsonObject.getDate("date");
|
final Date date = jsonObject.getDate("date");
|
||||||
|
@ -31,7 +31,7 @@ import java.sql.SQLException;
|
|||||||
public class Issue1399Test {
|
public class Issue1399Test {
|
||||||
@Test
|
@Test
|
||||||
void sqlExceptionTest() {
|
void sqlExceptionTest() {
|
||||||
final JSONObject set = JSONUtil.ofObj().putObj("error", new SQLException("test"));
|
final JSONObject set = JSONUtil.ofObj().putValue("error", new SQLException("test"));
|
||||||
|
|
||||||
final String jsonStr = set.toString();
|
final String jsonStr = set.toString();
|
||||||
Assertions.assertEquals("{\"error\":\"java.sql.SQLException: test\"}", jsonStr);
|
Assertions.assertEquals("{\"error\":\"java.sql.SQLException: test\"}", jsonStr);
|
||||||
|
@ -75,7 +75,7 @@ public class Issue2090Test {
|
|||||||
@Test
|
@Test
|
||||||
public void monthTest(){
|
public void monthTest(){
|
||||||
final JSONObject jsonObject = new JSONObject();
|
final JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.putObj("month", Month.JANUARY);
|
jsonObject.putValue("month", Month.JANUARY);
|
||||||
Assertions.assertEquals("{\"month\":1}", jsonObject.toString());
|
Assertions.assertEquals("{\"month\":1}", jsonObject.toString());
|
||||||
|
|
||||||
final JSON parse = JSONUtil.parse(Month.JANUARY);
|
final JSON parse = JSONUtil.parse(Month.JANUARY);
|
||||||
@ -87,7 +87,7 @@ public class Issue2090Test {
|
|||||||
@Test
|
@Test
|
||||||
public void weekTest(){
|
public void weekTest(){
|
||||||
final JSONObject jsonObject = new JSONObject();
|
final JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.putObj("week", DayOfWeek.SUNDAY);
|
jsonObject.putValue("week", DayOfWeek.SUNDAY);
|
||||||
Assertions.assertEquals("{\"week\":7}", jsonObject.toString());
|
Assertions.assertEquals("{\"week\":7}", jsonObject.toString());
|
||||||
|
|
||||||
final JSON parse = JSONUtil.parse(DayOfWeek.SUNDAY);
|
final JSON parse = JSONUtil.parse(DayOfWeek.SUNDAY);
|
||||||
|
@ -60,7 +60,7 @@ public class Issue2555Test {
|
|||||||
public static class MySerializer implements JSONSerializer<MyType> {
|
public static class MySerializer implements JSONSerializer<MyType> {
|
||||||
@Override
|
@Override
|
||||||
public JSON serialize(final MyType bean, final JSONContext context) {
|
public JSON serialize(final MyType bean, final JSONContext context) {
|
||||||
return context.getOrCreateObj().putObj("addr", bean.getAddress());
|
return context.getOrCreateObj().putValue("addr", bean.getAddress());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ public class Issue2572Test {
|
|||||||
final Set<DayOfWeek> weeks = new HashSet<>();
|
final Set<DayOfWeek> weeks = new HashSet<>();
|
||||||
weeks.add(DayOfWeek.MONDAY);
|
weeks.add(DayOfWeek.MONDAY);
|
||||||
final JSONObject obj = new JSONObject();
|
final JSONObject obj = new JSONObject();
|
||||||
obj.putObj("weeks", weeks);
|
obj.putValue("weeks", weeks);
|
||||||
Assertions.assertEquals("{\"weeks\":[1]}", obj.toString());
|
Assertions.assertEquals("{\"weeks\":[1]}", obj.toString());
|
||||||
|
|
||||||
final Map<String, Set<DayOfWeek>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<DayOfWeek>>>() {
|
final Map<String, Set<DayOfWeek>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<DayOfWeek>>>() {
|
||||||
@ -47,7 +47,7 @@ public class Issue2572Test {
|
|||||||
final Set<Month> months = new HashSet<>();
|
final Set<Month> months = new HashSet<>();
|
||||||
months.add(Month.DECEMBER);
|
months.add(Month.DECEMBER);
|
||||||
final JSONObject obj = new JSONObject();
|
final JSONObject obj = new JSONObject();
|
||||||
obj.putObj("months", months);
|
obj.putValue("months", months);
|
||||||
Assertions.assertEquals("{\"months\":[12]}", obj.toString());
|
Assertions.assertEquals("{\"months\":[12]}", obj.toString());
|
||||||
|
|
||||||
final Map<String, Set<Month>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<Month>>>() {
|
final Map<String, Set<Month>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<Month>>>() {
|
||||||
@ -60,7 +60,7 @@ public class Issue2572Test {
|
|||||||
final Set<MonthDay> monthDays = new HashSet<>();
|
final Set<MonthDay> monthDays = new HashSet<>();
|
||||||
monthDays.add(MonthDay.of(Month.DECEMBER, 1));
|
monthDays.add(MonthDay.of(Month.DECEMBER, 1));
|
||||||
final JSONObject obj = new JSONObject();
|
final JSONObject obj = new JSONObject();
|
||||||
obj.putObj("monthDays", monthDays);
|
obj.putValue("monthDays", monthDays);
|
||||||
Assertions.assertEquals("{\"monthDays\":[\"--12-01\"]}", obj.toString());
|
Assertions.assertEquals("{\"monthDays\":[\"--12-01\"]}", obj.toString());
|
||||||
|
|
||||||
final Map<String, Set<MonthDay>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<MonthDay>>>() {
|
final Map<String, Set<MonthDay>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<MonthDay>>>() {
|
||||||
|
@ -72,7 +72,7 @@ public class Issue3086Test {
|
|||||||
public JSON serialize(final TestBean bean, final JSONContext context) {
|
public JSON serialize(final TestBean bean, final JSONContext context) {
|
||||||
final List<String> strings = bean.getAuthorities()
|
final List<String> strings = bean.getAuthorities()
|
||||||
.stream().map(SimpleGrantedAuthority::getAuthority).collect(Collectors.toList());
|
.stream().map(SimpleGrantedAuthority::getAuthority).collect(Collectors.toList());
|
||||||
return context.getOrCreateObj().putObj("authorities",strings);
|
return context.getOrCreateObj().putValue("authorities",strings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,8 @@ public class IssueI3EGJPTest {
|
|||||||
@Test
|
@Test
|
||||||
public void hutoolMapToBean() {
|
public void hutoolMapToBean() {
|
||||||
final JSONObject paramJson = new JSONObject();
|
final JSONObject paramJson = new JSONObject();
|
||||||
paramJson.putObj("is_booleana", "1");
|
paramJson.putValue("is_booleana", "1");
|
||||||
paramJson.putObj("is_booleanb", true);
|
paramJson.putValue("is_booleanb", true);
|
||||||
final ConvertDO convertDO = paramJson.toBean(ConvertDO.class);
|
final ConvertDO convertDO = paramJson.toBean(ConvertDO.class);
|
||||||
|
|
||||||
Assertions.assertTrue(convertDO.isBooleana());
|
Assertions.assertTrue(convertDO.isBooleana());
|
||||||
|
@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test;
|
|||||||
public class IssueI59LW4Test {
|
public class IssueI59LW4Test {
|
||||||
@Test
|
@Test
|
||||||
public void bytesTest(){
|
public void bytesTest(){
|
||||||
final JSONObject jsonObject = JSONUtil.ofObj().putObj("bytes", new byte[]{1});
|
final JSONObject jsonObject = JSONUtil.ofObj().putValue("bytes", new byte[]{1});
|
||||||
Assertions.assertEquals("{\"bytes\":[1]}", jsonObject.toString());
|
Assertions.assertEquals("{\"bytes\":[1]}", jsonObject.toString());
|
||||||
|
|
||||||
final byte[] bytes = jsonObject.getBytes("bytes");
|
final byte[] bytes = jsonObject.getBytes("bytes");
|
||||||
@ -34,7 +34,7 @@ public class IssueI59LW4Test {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void bytesInJSONArrayTest(){
|
public void bytesInJSONArrayTest(){
|
||||||
final JSONArray jsonArray = JSONUtil.ofArray().addObj(new byte[]{1});
|
final JSONArray jsonArray = JSONUtil.ofArray().addValue(new byte[]{1});
|
||||||
Assertions.assertEquals("[[1]]", jsonArray.toString());
|
Assertions.assertEquals("[[1]]", jsonArray.toString());
|
||||||
|
|
||||||
final byte[] bytes = jsonArray.getBytes(0);
|
final byte[] bytes = jsonArray.getBytes(0);
|
||||||
|
@ -35,7 +35,7 @@ public class IssueI7VM64Test {
|
|||||||
map.put("a", "1");
|
map.put("a", "1");
|
||||||
|
|
||||||
final JSONObject jsonObject = new JSONObject();
|
final JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.putObj("c", map);
|
jsonObject.putValue("c", map);
|
||||||
map.put("b", 2);
|
map.put("b", 2);
|
||||||
|
|
||||||
//Console.log("Hutool JSON: " + jsonObject);
|
//Console.log("Hutool JSON: " + jsonObject);
|
||||||
|
@ -29,7 +29,7 @@ public class Pr3507Test {
|
|||||||
final JSONFactory factory = JSONFactory.of(null, null);
|
final JSONFactory factory = JSONFactory.of(null, null);
|
||||||
factory.register(Class.class, (JSONSerializer<Class<?>>) (bean, context) -> context.getOrCreatePrimitive(bean.getName()));
|
factory.register(Class.class, (JSONSerializer<Class<?>>) (bean, context) -> context.getOrCreatePrimitive(bean.getName()));
|
||||||
|
|
||||||
final JSONObject set = factory.ofObj().putObj("name", Pr3507Test.class);
|
final JSONObject set = factory.ofObj().putValue("name", Pr3507Test.class);
|
||||||
Assertions.assertEquals("{\"name\":\"org.dromara.hutool.json.issues.Pr3507Test\"}", set.toString());
|
Assertions.assertEquals("{\"name\":\"org.dromara.hutool.json.issues.Pr3507Test\"}", set.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package org.dromara.hutool.json.jmh;
|
package org.dromara.hutool.json.jmh;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import org.dromara.hutool.core.util.RandomUtil;
|
import org.dromara.hutool.core.util.RandomUtil;
|
||||||
import org.dromara.hutool.json.JSONObject;
|
import org.dromara.hutool.json.JSONObject;
|
||||||
@ -25,6 +27,7 @@ public class JsonPutJmh {
|
|||||||
private JSONObject hutoolJSON;
|
private JSONObject hutoolJSON;
|
||||||
private JsonObject gson;
|
private JsonObject gson;
|
||||||
private com.alibaba.fastjson2.JSONObject fastJSON;
|
private com.alibaba.fastjson2.JSONObject fastJSON;
|
||||||
|
private ObjectNode jackson;
|
||||||
|
|
||||||
|
|
||||||
@Setup
|
@Setup
|
||||||
@ -37,6 +40,7 @@ public class JsonPutJmh {
|
|||||||
hutoolJSON = new JSONObject();
|
hutoolJSON = new JSONObject();
|
||||||
gson = new JsonObject();
|
gson = new JsonObject();
|
||||||
fastJSON = new com.alibaba.fastjson2.JSONObject();
|
fastJSON = new com.alibaba.fastjson2.JSONObject();
|
||||||
|
jackson = JsonNodeFactory.instance.objectNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
@ -46,11 +50,17 @@ public class JsonPutJmh {
|
|||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void hutoolJmh() {
|
public void hutoolJmh() {
|
||||||
hutoolJSON.putAllObj(testData);
|
testData.forEach(hutoolJSON::putValue);
|
||||||
|
//hutoolJSON.putAllObj(testData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void fastJSONJmh() {
|
public void fastJSONJmh() {
|
||||||
fastJSON.putAll(testData);
|
fastJSON.putAll(testData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public void jacksonJmh(){
|
||||||
|
testData.forEach(jackson::put);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ public class CustomSerializeTest {
|
|||||||
TypeAdapterManager.getInstance().register(CustomBean.class,
|
TypeAdapterManager.getInstance().register(CustomBean.class,
|
||||||
(JSONSerializer<CustomBean>) (bean, context) ->{
|
(JSONSerializer<CustomBean>) (bean, context) ->{
|
||||||
final JSONObject contextJson = context.getOrCreateObj();
|
final JSONObject contextJson = context.getOrCreateObj();
|
||||||
return contextJson.putObj("customName", bean.name);
|
return contextJson.putValue("customName", bean.name);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ public class CustomSerializeTest {
|
|||||||
final CustomBean customBean = new CustomBean();
|
final CustomBean customBean = new CustomBean();
|
||||||
customBean.name = "testName";
|
customBean.name = "testName";
|
||||||
|
|
||||||
final JSONObject obj = JSONUtil.ofObj().putObj("customBean", customBean);
|
final JSONObject obj = JSONUtil.ofObj().putValue("customBean", customBean);
|
||||||
Assertions.assertEquals("testName", obj.getJSONObject("customBean").getStr("customName"));
|
Assertions.assertEquals("testName", obj.getJSONObject("customBean").getStr("customName"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,8 +26,8 @@ public class XMLTest {
|
|||||||
@Test
|
@Test
|
||||||
public void toXmlTest(){
|
public void toXmlTest(){
|
||||||
final JSONObject put = JSONUtil.ofObj()
|
final JSONObject put = JSONUtil.ofObj()
|
||||||
.putObj("aaa", "你好")
|
.putValue("aaa", "你好")
|
||||||
.putObj("键2", "test");
|
.putValue("键2", "test");
|
||||||
final String s = JSONUtil.toXmlStr(put);
|
final String s = JSONUtil.toXmlStr(put);
|
||||||
Assertions.assertEquals("<aaa>你好</aaa><键2>test</键2>", s);
|
Assertions.assertEquals("<aaa>你好</aaa><键2>test</键2>", s);
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ public class XMLTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void xmlContentTest(){
|
public void xmlContentTest(){
|
||||||
final JSONObject jsonObject = JSONUtil.ofObj().putObj("content","123456");
|
final JSONObject jsonObject = JSONUtil.ofObj().putValue("content","123456");
|
||||||
|
|
||||||
String xml = JSONXMLUtil.toXml(jsonObject);
|
String xml = JSONXMLUtil.toXml(jsonObject);
|
||||||
Assertions.assertEquals("123456", xml);
|
Assertions.assertEquals("123456", xml);
|
||||||
@ -56,7 +56,7 @@ public class XMLTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void xmlContentTest2(){
|
public void xmlContentTest2(){
|
||||||
final JSONObject jsonObject = JSONUtil.ofObj().putObj("content","123456");
|
final JSONObject jsonObject = JSONUtil.ofObj().putValue("content","123456");
|
||||||
final String xml = JSONXMLUtil.toXml(jsonObject, null, new String[0]);
|
final String xml = JSONXMLUtil.toXml(jsonObject, null, new String[0]);
|
||||||
Assertions.assertEquals("<content>123456</content>", xml);
|
Assertions.assertEquals("<content>123456</content>", xml);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user