构建JSONObject,规则如下:
value为Map,将键值对加入JSON对象
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。
构建指定name列表对应的键值对为新的JSONObject,情况如下:
Object
value)
设置表达式指定位置(或filed对应)的值
若表达式指向一个JSONArray则设置其坐标对应位置的值,若指向JSONObject则put对应key的值
注意:如果为JSONArray,设置值下标小于其长度,将替换原有值,否则追加新值
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
[]表达式,可以获取集合等对象中对应index的值
表达式栗子:
persion
persion.name
persons[3]
person.friends[5].name
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。
例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source
- JavaBean或者Map对象或者String
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source
- JavaBean或者Map对象或者String
ignoreNullValue
- 是否忽略空值
从以下版本开始:
3.0.9
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source
- JavaBean或者Map对象或者String
ignoreNullValue
- 是否忽略空值,如果source为JSON字符串,不忽略空值
isOrder
- 是否有序
从以下版本开始:
4.2.2
value为JSON字符串(CharSequence),使用JSONTokener解析
value为JSONTokener,直接解析
value为普通JavaBean,如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象。例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
如果给定值为Map,将键值对加入JSON对象;
如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象
例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source
- JavaBean或者Map对象或者String
config
- JSON配置文件,
null
则使用默认配置
从以下版本开始:
4.2.2
public 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对象。例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
如果给定值为Map,将键值对加入JSON对象;
如果为普通的JavaBean,调用其getters方法(getXXX或者isXXX)获得值,加入到JSON对象
例如:如果JavaBean对象中有个方法getName(),值为"张三",获得的键值对为:name: "张三"
source
- JavaBean或者Map对象或者String
config
- JSON配置文件,
null
则使用默认配置
filter
- 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,
null
表示不过滤
从以下版本开始:
5.8.0
setDateFormat
public JSONObject setDateFormat(String format)
设置转为字符串时的日期格式,默认为时间戳(null值)
此方法设置的日期格式仅对转换为JSON字符串有效,对解析JSON为bean无效。
format
- 格式,null表示使用时间戳
从以下版本开始:
4.1.19
public JSONArray toJSONArray(Collection<String> names)
throws JSONException
将指定KEY列表的值组成新的JSONArray
names
- KEY列表
A JSONArray of values.
JSONException
- If any of the values are non-finite numbers.
设置表达式指定位置(或filed对应)的值
若表达式指向一个JSONArray则设置其坐标对应位置的值,若指向JSONObject则put对应key的值
注意:如果为JSONArray,设置值下标小于其长度,将替换原有值,否则追加新值
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
[]表达式,可以获取集合等对象中对应index的值
表达式栗子:
persion
persion.name
persons[3]
person.friends[5].name
putByPath
在接口中
JSON
expression
- 表达式
value
- 值
Object
value)
throws
JSONException
已过时。
PUT 键值对到JSONObject中,在忽略null模式下,如果值为
null
,将此键移除
put
在接口中
Map
<
String
,
Object
>
put
在类中
MapWrapper
<
String
,
Object
>
key
- 键
value
- 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
this.
JSONException
- 值是无穷数字抛出此异常
key
- 键
value
- 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
this.
JSONException
- 值是无穷数字抛出此异常
public JSONObject set(String key,
Object value,
Filter<MutablePair<String,Object>> filter,
boolean checkDuplicate)
throws JSONException
设置键值对到JSONObject中,在忽略null模式下,如果值为
null
,将此键移除
key
- 键
value
- 值对象. 可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
filter
- 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,
null
表示不过滤
checkDuplicate
- 是否检查重复键,如果为
true
,则出现重复键时抛出
JSONException
异常
this.
JSONException
- 值是无穷数字抛出此异常
从以下版本开始:
5.8.0
key
- 键
value
- 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
this.
JSONException
- 值是无穷数字、键重复抛出异常
public JSONObject setOnce(String key,
Object value,
Filter<MutablePair<String,Object>> filter)
throws JSONException
一次性Put 键值对,如果key已经存在抛出异常,如果键值中有null值,忽略
key
- 键
value
- 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
filter
- 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,
null
表示不过滤
JSONException
- 值是无穷数字、键重复抛出异常
从以下版本开始:
5.8.0
key
- 键
value
- 值对象,可以是以下类型: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, or the JSONNull.NULL.
this.
JSONException
- 值是无穷数字
throws
JSONException
积累值。类似于set,当key对应value已经存在时,与value组成新的JSONArray.
如果只有一个值,此值就是value,如果多个值,则是添加到新的JSONArray中
key
- 键
value
- 被积累的值
this.
JSONException
- 如果给定键为
null
或者键对应的值存在且为非JSONArray
Object
value)
throws
JSONException
追加值,如果key无对应值,就添加一个JSONArray,其元素只有value,如果值已经是一个JSONArray,则添加到值JSONArray中。
key
- 键
value
- 值
this.
JSONException
- 如果给定键为
null
或者键对应的值存在且为非JSONArray
public JSONObject increment(String key)
throws JSONException
对值加一,如果值不存在,赋值1,如果为数字类型,做加一操作
key
- A key string.
this.
JSONException
- 如果存在值非Integer, Long, Double, 或 Float.
toJSONString
public String toJSONString(int indentFactor,
Filter<MutablePair<Object,Object>> filter)
返回JSON字符串
支持过滤器,即选择哪些字段或值不写出
indentFactor
- 每层缩进空格数
filter
- 过滤器,同时可以修改编辑键和值
JSON字符串
从以下版本开始:
5.7.15
将JSON内容写入Writer
Warning: This method assumes that the data structure is acyclical.
write
在接口中
JSON
writer
- writer
indentFactor
- 缩进因子,定义每一级别增加的缩进量
indent
- 本级别缩进量
Writer
JSONException
- JSON相关异常