public class JSONObject extends Object implements JSON, JSONGetter<String>, Map<String,Object>
json = new JSONObject().put("JSON", "Hello, World!").toString();
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_CAPACITY
默认初始大小
|
Constructor and Description |
---|
JSONObject()
构造,初始容量为
DEFAULT_CAPACITY ,KEY无序 |
JSONObject(boolean isOrder)
构造,初始容量为
DEFAULT_CAPACITY |
JSONObject(CharSequence source,
boolean isOrder)
从JSON字符串解析为JSON对象,对于排序单独配置参数
|
JSONObject(int capacity,
boolean isOrder)
构造
|
JSONObject(int capacity,
boolean isIgnoreCase,
boolean 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对象。
例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
|
JSONObject(Object source,
boolean ignoreNullValue)
构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
|
JSONObject(Object source,
boolean ignoreNullValue,
boolean isOrder)
构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
|
JSONObject(Object source,
JSONConfig config)
构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
|
JSONObject(Object obj,
String... names)
构建指定name列表对应的键值对为新的JSONObject,情况如下:
|
Modifier and Type | Method and Description |
---|---|
JSONObject |
accumulate(String key,
Object value)
积累值。类似于set,当key对应value已经存在时,与value组成新的JSONArray.
|
JSONObject |
append(String key,
Object value)
追加值,如果key无对应值,就添加一个JSONArray,其元素只有value,如果值已经是一个JSONArray,则添加到值JSONArray中。
|
void |
clear() |
boolean |
containsKey(Object key) |
boolean |
containsValue(Object value) |
Set<Map.Entry<String,Object>> |
entrySet() |
boolean |
equals(Object obj) |
Object |
get(Object key) |
Object |
getByPath(String expression)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 |
<T> T |
getByPath(String expression,
Class<T> resultType)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 |
JSONConfig |
getConfig()
获取JSON配置
|
Object |
getObj(String key,
Object defaultValue)
获取Object属性值
|
int |
hashCode() |
JSONObject |
increment(String key)
对值加一,如果值不存在,赋值1,如果为数字类型,做加一操作
|
boolean |
isEmpty() |
Set<String> |
keySet() |
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的值 |
JSONObject |
putOnce(String key,
Object value)
一次性Put 键值对,如果key已经存在抛出异常,如果键值中有null值,忽略
|
JSONObject |
putOpt(String key,
Object value)
在键和值都为非空的情况下put到JSONObject中
|
Object |
remove(Object key) |
JSONObject |
set(String key,
Object value)
设置键值对到JSONObject中,在忽略null模式下,如果值为
null ,将此键移除 |
JSONObject |
setDateFormat(String format)
设置转为字符串时的日期格式,默认为时间戳(null值)
此方法设置的日期格式仅对转换为JSON字符串有效,对解析JSON为bean无效。 |
int |
size() |
JSONArray |
toJSONArray(Collection<String> names)
将指定KEY列表的值组成新的JSONArray
|
String |
toString()
返回JSON字符串
如果解析错误,返回 null |
Collection<Object> |
values() |
Writer |
write(Writer writer,
int indentFactor,
int indent)
将JSON内容写入Writer
Warning: This method assumes that the data structure is acyclical. |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
toBean, toBean, toBean, toBean, toJSONString, toStringPretty, write
get, get, getBean, getJSONArray, getJSONObject, getStrEscaped, getStrEscaped, isNull
getBigDecimal, getBigInteger, getBool, getByte, getChar, getDate, getDouble, getEnum, getFloat, getInt, getLong, getShort, getStr
getBigDecimal, getBigInteger, getBool, getByte, getChar, getDate, getDouble, getEnum, getFloat, getInt, getLong, getObj, getShort, getStr
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
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
- 是否有序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
- 是否忽略空值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配置文件public JSONObject(Object obj, String... names)
1. 若obj为Map,则获取name列表对应键值对 2. 若obj为普通Bean,使用反射方式获取字段名和字段值
KEY或VALUE任意一个为null则不加入,字段不存在也不加入
若names列表为空,则字段全部加入
obj
- 包含需要字段的Bean对象或者Map对象names
- 需要构建JSONObject的字段名列表public JSONObject(CharSequence source, boolean isOrder) throws JSONException
source
- 以大括号 {} 包围的字符串,其中KEY和VALUE使用 : 分隔,每个键值对使用逗号分隔isOrder
- 是否有序JSONException
- JSON字符串语法错误public JSONConfig getConfig()
JSONGetter
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 boolean containsKey(Object key)
containsKey
in interface Map<String,Object>
public boolean containsValue(Object value)
containsValue
in interface Map<String,Object>
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>
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 putOnce(String key, Object value) throws JSONException
key
- 键value
- 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.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 int hashCode()
public boolean equals(Object obj)
public String toString()
null
public Writer write(Writer writer, int indentFactor, int indent) throws JSONException
JSON
write
in interface JSON
writer
- writerindentFactor
- 缩进因子,定义每一级别增加的缩进量indent
- 本级别缩进量JSONException
- JSON相关异常Copyright © 2021. All rights reserved.