mirror of
https://gitee.com/dromara/hutool.git
synced 2025-07-30 22:10:27 +08:00
add checkDumplicate
This commit is contained in:
parent
fa5763e03a
commit
a36a970341
@ -218,11 +218,11 @@ public final class InternalJSONUtil {
|
||||
JSONObject nextTarget = target.getJSONObject(segment);
|
||||
if (nextTarget == null) {
|
||||
nextTarget = new JSONObject(target.getConfig());
|
||||
target.setOnce(segment, nextTarget, predicate);
|
||||
target.set(segment, nextTarget, predicate);
|
||||
}
|
||||
target = nextTarget;
|
||||
}
|
||||
target.setOnce(path[last], value, predicate);
|
||||
target.set(path[last], value, predicate);
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
@ -318,7 +318,7 @@ public final class InternalJSONUtil {
|
||||
public static Writer quote(final String str, final Writer writer, final boolean isWrap) throws IORuntimeException {
|
||||
try {
|
||||
return doQuote(str, writer, isWrap);
|
||||
} catch (IOException e) {
|
||||
} catch (final IOException e) {
|
||||
throw new IORuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
@ -43,6 +43,10 @@ public class JSONConfig implements Serializable {
|
||||
* 是否去除末尾多余0,例如如果为true,5.0返回5
|
||||
*/
|
||||
private boolean stripTrailingZeros = true;
|
||||
/**
|
||||
* 是否检查重复key
|
||||
*/
|
||||
private boolean checkDuplicate;
|
||||
|
||||
/**
|
||||
* 创建默认的配置项
|
||||
@ -211,4 +215,26 @@ public class JSONConfig implements Serializable {
|
||||
this.stripTrailingZeros = stripTrailingZeros;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否检查多个相同的key
|
||||
*
|
||||
* @return 是否检查多个相同的key
|
||||
* @since 5.8.5
|
||||
*/
|
||||
public boolean isCheckDuplicate() {
|
||||
return checkDuplicate;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否检查多个相同的key
|
||||
*
|
||||
* @param checkDuplicate 是否检查多个相同的key
|
||||
* @return this
|
||||
* @since 5.8.5
|
||||
*/
|
||||
public JSONConfig setCheckDuplicate(boolean checkDuplicate) {
|
||||
this.checkDuplicate = checkDuplicate;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ public class JSONObject extends MapWrapper<String, Object> implements JSON, JSON
|
||||
*/
|
||||
@Override
|
||||
public Object put(final String key, final Object value) throws JSONException {
|
||||
return put(key, value, null, false);
|
||||
return put(key, value, null, getConfig().isCheckDuplicate());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -210,7 +210,7 @@ public class JSONObject extends MapWrapper<String, Object> implements JSON, JSON
|
||||
* @throws JSONException 值是无穷数字抛出此异常
|
||||
*/
|
||||
public JSONObject set(final String key, final Object value) throws JSONException {
|
||||
put(key, value, null, false);
|
||||
set(key, value, null);
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -224,8 +224,8 @@ public class JSONObject extends MapWrapper<String, Object> implements JSON, JSON
|
||||
* @throws JSONException 值是无穷数字、键重复抛出异常
|
||||
* @since 5.8.0
|
||||
*/
|
||||
public JSONObject setOnce(final String key, final Object value, final Predicate<MutableEntry<String, Object>> predicate) throws JSONException {
|
||||
put(key, value, predicate, true);
|
||||
public JSONObject set(final String key, final Object value, final Predicate<MutableEntry<String, Object>> predicate) throws JSONException {
|
||||
put(key, value, predicate, getConfig().isCheckDuplicate());
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -74,7 +74,7 @@ public class JSONParser {
|
||||
throw tokener.syntaxError("Expected a ':' after a key");
|
||||
}
|
||||
|
||||
jsonObject.setOnce(key, tokener.nextValue(), predicate);
|
||||
jsonObject.set(key, tokener.nextValue(), predicate);
|
||||
|
||||
// Pairs are separated by ','.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user