public class JSONObject extends MapWrapper<String,Object> implements JSON, JSONGetter<String>
json = new JSONObject().put("JSON", "Hello, World!").toString();
| 限定符和类型 | 字段和说明 |
|---|---|
static int |
DEFAULT_CAPACITY
默认初始大小
|
DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR| 构造器和说明 |
|---|
JSONObject()
构造,初始容量为
DEFAULT_CAPACITY,KEY有序 |
JSONObject(int capacity,
JSONConfig config)
构造
|
JSONObject(JSONConfig config)
构造
|
JSONObject(Object source)
构建JSONObject,JavaBean默认忽略null值,其它对象不忽略,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。
|
JSONObject(Object source,
JSONConfig config)
构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。
|
JSONObject(Object source,
JSONConfig config,
Predicate<MutableEntry<String,Object>> predicate)
构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。
|
| 限定符和类型 | 方法和说明 |
|---|---|
JSONObject |
append(String key,
Object value)
追加值.
|
JSONObject |
clone() |
JSONConfig |
config()
获取JSON配置
|
<P,T> T |
get(SerFunction<P,T> func)
根据lambda的方法引用,获取
|
Object |
getObj(String key,
Object defaultValue) |
JSONObject |
increment(String key)
对值加一,如果值不存在,赋值1,如果为数字类型,做加一操作
|
Object |
put(String key,
Object value)
PUT 键值对到JSONObject中,在忽略null模式下,如果值为
null,将此键移除 |
void |
putAll(Map<? extends String,?> m) |
JSONObject |
set(String key,
Object value)
设置键值对到JSONObject中,在忽略null模式下,如果值为
null,将此键移除 |
JSONObject |
set(String key,
Object value,
Predicate<MutableEntry<String,Object>> predicate)
一次性Put 键值对,如果key已经存在抛出异常,如果键值中有null值,忽略
|
JSONObject |
set(String key,
Object value,
Predicate<MutableEntry<String,Object>> predicate,
boolean checkDuplicate)
设置键值对到JSONObject中,在忽略null模式下,如果值为
null,将此键移除 |
JSONObject |
setDateFormat(String format)
设置转为字符串时的日期格式,默认为时间戳(null值)
此方法设置的日期格式仅对转换为JSON字符串有效,对解析JSON为bean无效。 |
JSONObject |
setFields(SerSupplier<?>... fields)
通过lambda批量设置值
实际使用时,可以使用getXXX的方法引用来完成键值对的赋值: User user = GenericBuilder.of(User::new).with(User::setUsername, "hutool").build(); (new JSONObject()).setFields(user::getNickname, user::getUsername); |
JSONObject |
setOpt(String key,
Object value)
在键和值都为非空的情况下put到JSONObject中
|
JSONArray |
toJSONArray(Collection<String> names)
将指定KEY列表的值组成新的JSONArray
|
String |
toJSONString(int indentFactor,
Predicate<MutableEntry<Object,Object>> predicate)
返回JSON字符串
支持过滤器,即选择哪些字段或值不写出 |
String |
toString()
返回JSON字符串
如果解析错误,返回 null |
Writer |
write(Writer writer,
int indentFactor,
int indent,
Predicate<MutableEntry<Object,Object>> predicate)
将JSON内容写入Writer
支持过滤器,即选择哪些字段或值不写出 |
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, equals, forEach, get, getOrDefault, getRaw, hashCode, isEmpty, iterator, keySet, merge, putIfAbsent, remove, remove, replace, replace, replaceAll, size, valuesconvert, getByPath, getByPath, putByPath, size, toBean, toJSONString, toStringPretty, writeget, getBean, getBeanList, getJSONArray, getJSONObject, getStrEscaped, getStrEscaped, isNullget, get, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBool, getBool, getByte, getByte, getBytes, getBytes, getChar, getChar, getDate, getDate, getDouble, getDouble, getEnum, getEnum, getFloat, getFloat, getInt, getInt, getLocalDate, getLocalDate, getLocalDateTime, getLocalDateTime, getLocalTime, getLocalTime, getLong, getLong, getNumber, getNumber, getObj, getShort, getShort, getSqlTime, getSqlTime, getSqlTimestamp, getSqlTimestamp, getStr, getStrforEach, spliteratorpublic static final int DEFAULT_CAPACITY
public JSONObject()
DEFAULT_CAPACITY,KEY有序public JSONObject(JSONConfig config)
config - JSON配置项public JSONObject(int capacity,
JSONConfig config)
capacity - 初始大小config - JSON配置项,null则使用默认配置public JSONObject(Object source)
source - JavaBean或者Map对象或者Stringpublic JSONObject(Object source, JSONConfig config)
如果给定值为Map,将键值对加入JSON对象;
如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象
例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source - JavaBean或者Map对象或者Stringconfig - JSON配置文件,null则使用默认配置public JSONObject(Object source, JSONConfig config, Predicate<MutableEntry<String,Object>> predicate)
如果给定值为Map,将键值对加入JSON对象;
如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象
例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source - JavaBean或者Map对象或者Stringconfig - JSON配置文件,null则使用默认配置predicate - 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,null表示不过滤,Predicate.test(Object)为true保留public JSONConfig config()
JSONconfig 在接口中 JSONconfig 在接口中 JSONGetter<String>JSONConfigpublic JSONObject setDateFormat(String format)
format - 格式,null表示使用时间戳public JSONArray toJSONArray(Collection<String> names) throws JSONException
names - KEY列表JSONException - If any of the values are non-finite numbers.public <P,T> T get(SerFunction<P,T> func)
P - 参数类型T - 返回值类型func - 方法引用public Object put(String key, Object value) throws JSONException
null,将此键移除put 在接口中 Map<String,Object>put 在类中 MapWrapper<String,Object>key - 键value - 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.JSONException - 值是无穷数字抛出此异常public JSONObject set(String key, Object value) throws JSONException
null,将此键移除key - 键value - 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.JSONException - 值是无穷数字抛出此异常public JSONObject setFields(SerSupplier<?>... fields)
User user = GenericBuilder.of(User::new).with(User::setUsername, "hutool").build();
(new JSONObject()).setFields(user::getNickname, user::getUsername);
fields - lambda,不能为空public JSONObject set(String key, Object value, Predicate<MutableEntry<String,Object>> predicate) throws JSONException
key - 键value - 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.predicate - 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,null表示不过滤,Predicate.test(Object)为true保留JSONException - 值是无穷数字、键重复抛出异常public JSONObject set(String key, Object value, Predicate<MutableEntry<String,Object>> predicate, boolean checkDuplicate) throws JSONException
null,将此键移除key - 键value - 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.predicate - 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,null表示不过滤,Predicate.test(Object)为true保留checkDuplicate - 是否检查重复键,如果为true,则出现重复键时抛出JSONException异常JSONException - 值是无穷数字抛出此异常public JSONObject setOpt(String key, Object value) throws JSONException
key - 键value - 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.JSONException - 值是无穷数字public JSONObject append(String key, Object value) throws JSONException
key - 键value - 值JSONException - 如果给定键为null或者键对应的值存在且为非JSONArraypublic JSONObject increment(String key) throws JSONException
key - A key string.JSONException - 如果存在值非Integer, Long, Double, 或 Float.public String toString()
nulltoString 在类中 MapWrapper<String,Object>public String toJSONString(int indentFactor, Predicate<MutableEntry<Object,Object>> predicate)
indentFactor - 每层缩进空格数predicate - 过滤器,同时可以修改编辑键和值,Predicate.test(Object)为true保留public Writer write(Writer writer, int indentFactor, int indent, Predicate<MutableEntry<Object,Object>> predicate) throws JSONException
write 在接口中 JSONwriter - writerindentFactor - 缩进因子,定义每一级别增加的缩进量indent - 本级别缩进量predicate - 过滤器,同时可以修改编辑键和值JSONException - JSON相关异常public JSONObject clone() throws CloneNotSupportedException
clone 在类中 MapWrapper<String,Object>CloneNotSupportedExceptionCopyright © 2024. All rights reserved.