public class JSONObject extends MapWrapper<String,Object> implements JSON, JSONGetter<String>
json = new JSONObject().put("JSON", "Hello, World!").toString();
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_CAPACITY
默认初始大小
|
DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR
Constructor and Description |
---|
JSONObject()
构造,初始容量为
DEFAULT_CAPACITY ,KEY无序 |
JSONObject(boolean isOrder)
构造,初始容量为
DEFAULT_CAPACITY |
JSONObject(CharSequence source,
boolean isOrder)
Deprecated.
isOrder无效
|
JSONObject(int capacity,
boolean isOrder)
构造
|
JSONObject(int capacity,
boolean isIgnoreCase,
boolean isOrder)
Deprecated.
isOrder无效
|
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,
boolean ignoreNullValue)
构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。
|
JSONObject(Object source,
boolean ignoreNullValue,
boolean isOrder)
Deprecated.
isOrder参数不再需要,JSONObject默认有序!
|
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,
Filter<MutablePair<String,Object>> filter)
构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。
|
JSONObject(Object source,
String... names)
构建指定name列表对应的键值对为新的JSONObject,情况如下:
1.
|
Modifier and Type | Method and Description |
---|---|
JSONObject |
accumulate(String key,
Object value)
积累值。
|
JSONObject |
append(String key,
Object value)
追加值,如果key无对应值,就添加一个JSONArray,其元素只有value,如果值已经是一个JSONArray,则添加到值JSONArray中。
|
JSONObject |
clone() |
Object |
getByPath(String expression)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
<T> T |
getByPath(String expression,
Class<T> resultType)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name 获取表达式对应值后转换为对应类型的值 |
JSONConfig |
getConfig()
获取JSON配置
|
Object |
getObj(String key,
Object defaultValue)
获取Object属性值
|
JSONObject |
increment(String key)
对值加一,如果值不存在,赋值1,如果为数字类型,做加一操作
|
JSONObject |
put(String key,
Object value)
Deprecated.
此方法存在歧义,原Map接口返回的是之前的值,重写后返回this了,未来版本此方法会修改,请使用
set(String, Object) |
void |
putAll(Map<? extends String,?> m) |
void |
putByPath(String expression,
Object value)
设置表达式指定位置(或filed对应)的值
若表达式指向一个JSONArray则设置其坐标对应位置的值,若指向JSONObject则put对应key的值 注意:如果为JSONArray,设置值下标小于其长度,将替换原有值,否则追加新值 .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
JSONObject |
putOnce(String key,
Object value)
一次性Put 键值对,如果key已经存在抛出异常,如果键值中有null值,忽略
|
JSONObject |
putOpt(String key,
Object value)
在键和值都为非空的情况下put到JSONObject中
|
JSONObject |
set(String key,
Object value)
设置键值对到JSONObject中,在忽略null模式下,如果值为
null ,将此键移除 |
JSONObject |
set(String key,
Object value,
Filter<MutablePair<String,Object>> filter,
boolean checkDuplicate)
设置键值对到JSONObject中,在忽略null模式下,如果值为
null ,将此键移除 |
JSONObject |
setDateFormat(String format)
设置转为字符串时的日期格式,默认为时间戳(null值)
此方法设置的日期格式仅对转换为JSON字符串有效,对解析JSON为bean无效。 |
JSONObject |
setOnce(String key,
Object value,
Filter<MutablePair<String,Object>> filter)
一次性Put 键值对,如果key已经存在抛出异常,如果键值中有null值,忽略
|
JSONArray |
toJSONArray(Collection<String> names)
将指定KEY列表的值组成新的JSONArray
|
String |
toJSONString(int indentFactor,
Filter<MutablePair<Object,Object>> filter)
返回JSON字符串
支持过滤器,即选择哪些字段或值不写出 |
String |
toString()
返回JSON字符串
如果解析错误,返回 null |
Writer |
write(Writer writer,
int indentFactor,
int indent)
将JSON内容写入Writer
Warning: This method assumes that the data structure is acyclical. |
Writer |
write(Writer writer,
int indentFactor,
int indent,
Filter<MutablePair<Object,Object>> filter)
将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, values
finalize, getClass, notify, notifyAll, wait, wait, wait
toBean, toBean, toBean, toBean, toJSONString, toStringPretty, write
get, get, getBean, getBeanList, getBytes, getDate, getJSONArray, getJSONObject, getLocalDateTime, getStrEscaped, getStrEscaped, isNull
getBigDecimal, getBigInteger, getBool, getByte, getChar, getDouble, getEnum, getFloat, getInt, getLong, getShort, getStr
getBigDecimal, getBigInteger, getBool, getByte, getChar, getDate, getDouble, getEnum, getFloat, getInt, getLong, getObj, getShort, getStr
forEach, spliterator
public static final int DEFAULT_CAPACITY
public JSONObject()
DEFAULT_CAPACITY
,KEY无序public JSONObject(boolean isOrder)
DEFAULT_CAPACITY
isOrder
- 是否有序public JSONObject(int capacity, boolean isOrder)
capacity
- 初始大小isOrder
- 是否有序@Deprecated public JSONObject(int capacity, boolean isIgnoreCase, boolean isOrder)
capacity
- 初始大小isIgnoreCase
- 是否忽略KEY大小写isOrder
- 是否有序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, boolean ignoreNullValue)
source
- JavaBean或者Map对象或者StringignoreNullValue
- 是否忽略空值@Deprecated public JSONObject(Object source, boolean ignoreNullValue, boolean isOrder)
source
- JavaBean或者Map对象或者StringignoreNullValue
- 是否忽略空值,如果source为JSON字符串,不忽略空值isOrder
- 是否有序public 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, Filter<MutablePair<String,Object>> filter)
如果给定值为Map,将键值对加入JSON对象;
如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象
例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source
- JavaBean或者Map对象或者Stringconfig
- JSON配置文件,null
则使用默认配置filter
- 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,null
表示不过滤public JSONObject(Object source, String... names)
1. 若obj为Map,则获取name列表对应键值对 2. 若obj为普通Bean,使用反射方式获取字段名和字段值
KEY或VALUE任意一个为null则不加入,字段不存在也不加入
若names列表为空,则字段全部加入
source
- 包含需要字段的Bean对象或者Map对象names
- 需要构建JSONObject的字段名列表@Deprecated public JSONObject(CharSequence source, boolean isOrder) throws JSONException
source
- 以大括号 {} 包围的字符串,其中KEY和VALUE使用 : 分隔,每个键值对使用逗号分隔isOrder
- 是否有序JSONException
- JSON字符串语法错误public JSONConfig getConfig()
JSON
getConfig
in interface JSON
getConfig
in interface JSONGetter<String>
JSONConfig
public 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 Object getObj(String key, Object defaultValue)
OptBasicTypeGetter
getObj
in interface OptBasicTypeGetter<String>
key
- 属性名defaultValue
- 默认值public Object getByPath(String expression)
JSON
表达式栗子:
persion persion.name persons[3] person.friends[5].name
getByPath
in interface JSON
expression
- 表达式BeanPath.get(Object)
public <T> T getByPath(String expression, Class<T> resultType)
JSON
表达式栗子:
persion persion.name persons[3] person.friends[5].name
获取表达式对应值后转换为对应类型的值
getByPath
in interface JSON
T
- 返回值类型expression
- 表达式resultType
- 返回值类型BeanPath.get(Object)
public void putByPath(String expression, Object value)
JSON
表达式栗子:
persion persion.name persons[3] person.friends[5].name
@Deprecated public JSONObject put(String key, Object value) throws JSONException
set(String, Object)
null
,将此键移除put
in interface Map<String,Object>
put
in class 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 set(String key, Object value, Filter<MutablePair<String,Object>> filter, boolean checkDuplicate) throws JSONException
null
,将此键移除key
- 键value
- 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.filter
- 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,null
表示不过滤checkDuplicate
- 是否检查重复键,如果为true
,则出现重复键时抛出JSONException
异常JSONException
- 值是无穷数字抛出此异常public JSONObject putOnce(String key, Object value) throws JSONException
key
- 键value
- 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.JSONException
- 值是无穷数字、键重复抛出异常public JSONObject setOnce(String key, Object value, Filter<MutablePair<String,Object>> filter) throws JSONException
key
- 键value
- 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.filter
- 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,null
表示不过滤JSONException
- 值是无穷数字、键重复抛出异常public JSONObject putOpt(String key, Object value) throws JSONException
key
- 键value
- 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.JSONException
- 值是无穷数字public JSONObject accumulate(String key, Object value) throws JSONException
key
- 键value
- 被积累的值JSONException
- 如果给定键为null
或者键对应的值存在且为非JSONArraypublic 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()
null
toString
in class MapWrapper<String,Object>
public String toJSONString(int indentFactor, Filter<MutablePair<Object,Object>> filter)
indentFactor
- 每层缩进空格数filter
- 过滤器,同时可以修改编辑键和值public Writer write(Writer writer, int indentFactor, int indent) throws JSONException
JSON
write
in interface JSON
writer
- writerindentFactor
- 缩进因子,定义每一级别增加的缩进量indent
- 本级别缩进量JSONException
- JSON相关异常public Writer write(Writer writer, int indentFactor, int indent, Filter<MutablePair<Object,Object>> filter) throws JSONException
writer
- writerindentFactor
- 缩进因子,定义每一级别增加的缩进量indent
- 本级别缩进量filter
- 过滤器,同时可以修改编辑键和值JSONException
- JSON相关异常public JSONObject clone() throws CloneNotSupportedException
clone
in class MapWrapper<String,Object>
CloneNotSupportedException
Copyright © 2024. All rights reserved.