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 获取表达式对应值后转换为对应类型的值 |
<T> T |
getByPath(String expression,
TypeReference<T> targetType)
通过表达式获取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, valuesfinalize, getClass, notify, notifyAll, wait, wait, waittoBean, toBean, toBean, toBean, toJSONString, toStringPretty, writeget, get, getBean, getBeanList, getBytes, getDate, getJSONArray, getJSONObject, getLocalDateTime, getStrEscaped, getStrEscaped, isNullgetBigDecimal, getBigInteger, getBool, getByte, getChar, getDouble, getEnum, getFloat, getInt, getLong, getShort, getStrgetBigDecimal, getBigInteger, getBool, getByte, getChar, getDate, getDouble, getEnum, getFloat, getInt, getLong, getObj, getShort, getStrforEach, spliteratorpublic static final int DEFAULT_CAPACITY
public JSONObject()
DEFAULT_CAPACITY,KEY无序public JSONObject(boolean isOrder)
DEFAULT_CAPACITYisOrder - 是否有序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()
JSONgetConfig in interface JSONgetConfig in interface 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 Object getObj(String key, Object defaultValue)
OptBasicTypeGettergetObj in interface OptBasicTypeGetter<String>key - 属性名defaultValue - 默认值public Object getByPath(String expression)
JSON表达式栗子:
persion persion.name persons[3] person.friends[5].name
getByPath in interface JSONexpression - 表达式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 JSONT - 返回值类型expression - 表达式resultType - 返回值类型BeanPath.get(Object)public <T> T getByPath(String expression, TypeReference<T> targetType)
JSON表达式栗子:
persion persion.name persons[3] person.friends[5].name
获取表达式对应值后转换为对应类型的值
getByPath in interface JSONT - 获取对象类型expression - 表达式targetType - 返回值类型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()
nulltoString 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
JSONwrite in interface JSONwriter - 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>CloneNotSupportedExceptionCopyright © 2025. All rights reserved.