Package | Description |
---|---|
org.dromara.hutool.json |
JSON(JavaScript Object Notation JavaScript对象表示法)封装
规范见:https://www.rfc-editor.org/rfc/rfc8259 包含以下组件: JSONObject: 使用键值对表示的数据类型,使用"{}"包围 JSONArray: 使用列表表示的数据类型,使用"[]"包围 JSONPrimitive:表示boolean、String、Number等原始类型 JSON封装主要包括JSON表示和JSON转换:
<-----JSONMapper----- <---JSONParser----
Java对象 <====================> JSON对象 <=================> JSON字符串
-----JSONMapper-----> ---JSONWriter---->
当然,为了高效转换,如果没有自定义需求,Java对象可以不通过JSON对象与JSON字符串转换:
JSONTokener:JSON字符串底层解析器,通过Stream方式读取JSON字符串并对不同字段自定义处理。 |
org.dromara.hutool.json.serializer |
JSON序列化和反序列化,提供对象和JSON之间的转换,我们定义:
1.
|
org.dromara.hutool.json.support |
JSON的支持类,如用于转换和BeanPath操作的对象,还有用于格式化的对象等
|
org.dromara.hutool.json.writer |
JSON对象自定义转JSON字符串实现
|
Modifier and Type | Method and Description |
---|---|
default JSONConfig |
JSON.config()
获取JSON配置
|
JSONConfig |
JSONFactory.getConfig()
获取配置项,始终非空
|
static JSONConfig |
JSONConfig.of()
创建默认的配置项
|
JSONConfig |
JSONConfig.set(JSONConfig.DuplicateMode duplicateMode)
设置key重复策略
|
JSONConfig |
JSONConfig.setDateFormat(String dateFormat)
设置日期格式,null表示默认的时间戳
此方法设置的日期格式仅对转换为JSON字符串有效,对解析JSON为bean无效。 |
JSONConfig |
JSONConfig.setIgnoreCase(boolean ignoreCase)
设置是否忽略键的大小写
|
JSONConfig |
JSONConfig.setIgnoreError(boolean ignoreError)
设置是否忽略转换过程中的异常
|
JSONConfig |
JSONConfig.setIgnoreNullValue(boolean ignoreNullValue)
设置是否忽略null值
此选项主要作用于两个阶段: Java对象或JSON字符串转为JSON时 JSON写出或转为JSON字符串时 |
JSONConfig |
JSONConfig.setIgnoreZeroWithChar(boolean ignoreZeroWithChar)
设置是否忽略零宽字符,这些字符可能会导致解析安全问题,这些字符包括:
零宽空格:
零宽非换行空:
零宽连接符:
零宽无断空格:
|
JSONConfig |
JSONConfig.setKeyComparator(Comparator<String> keyComparator)
设置键排序规则
键排序规则, null 表示不排序,不排序情况下,按照加入顺序排序 |
JSONConfig |
JSONConfig.setNatureKeyComparator()
设置自然排序,即按照字母顺序排序
|
JSONConfig |
JSONConfig.setNumberWriteMode(NumberWriteMode numberWriteMode)
设置数字写出模式
考虑到在JS或其他环境中,Number超过一定长度会丢失精度,因此针对Number类型值,可选写出规则 |
JSONConfig |
JSONConfig.setStripTrailingZeros(boolean stripTrailingZeros)
设置是否去除末尾多余0,例如如果为true,5.0返回5
|
JSONConfig |
JSONConfig.setTransientSupport(boolean transientSupport)
设置是否支持transient关键字修饰和@Transient注解,如果支持,被修饰的字段或方法对应的字段将被忽略。
|
Modifier and Type | Method and Description |
---|---|
static JSONFactory |
JSONFactory.of(JSONConfig config)
创建JSON工厂
|
static JSONFactory |
JSONFactory.of(JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
创建JSON工厂
|
static JSONArray |
JSONUtil.ofArray(JSONConfig config)
创建 JSONArray
|
static JSONObject |
JSONUtil.ofObj(JSONConfig config)
创建JSONObject
|
static JSONPrimitive |
JSONUtil.ofPrimitive(Object value,
JSONConfig config)
创建JSONPrimitive对象,用于创建非JSON对象,例如:
JSONUtil.ofPrimitive(1, config);
JSONUtil.ofPrimitive(1L, config);
JSONUtil.ofPrimitive(1.0, config);
JSONUtil.ofPrimitive(true, config);
JSONUtil.ofPrimitive("str", config);
|
static JSON |
JSONUtil.parse(Object obj,
JSONConfig config)
解析对象为JSON,持的对象:
String: 解析为相应的对象
Number、boolean: 转换为
JSONPrimitive
Array、Iterable、Iterator:转换为JSONArray
Bean对象:转为JSONObject
|
static JSON |
JSONUtil.parse(Object obj,
JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
解析对象为JSON,持的对象:
String: 解析为相应的对象
Number、boolean: 转换为
JSONPrimitive
Array、Iterable、Iterator:转换为JSONArray
Bean对象:转为JSONObject
|
static JSONArray |
JSONUtil.parseArray(Object obj,
JSONConfig config)
JSON字符串转JSONArray
|
static JSONArray |
JSONUtil.parseArray(Object obj,
JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
对象转JSONArray
|
static JSONObject |
JSONUtil.parseObj(Object obj,
JSONConfig config)
JSON字符串转JSONObject对象
此方法会忽略空值,但是对JSON字符串不影响 |
static JSONObject |
JSONUtil.parseObj(Object obj,
JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
对象转JSONObject对象
|
static <T> T |
JSONUtil.toBean(Object obj,
JSONConfig config,
Type type)
转为实体类对象
|
static JSON |
JSONUtil.toJSON(Object obj,
JSONConfig config)
转换对象为JSON,如果用户不配置JSONConfig,则JSON的有序与否与传入对象有关。
|
static JSON |
JSONUtil.toJSON(Object obj,
JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
转换对象为JSON,如果用户不配置JSONConfig,则JSON的有序与否与传入对象有关。
|
static String |
JSONUtil.toJsonStr(Object obj,
JSONConfig jsonConfig)
转换为JSON字符串
|
Constructor and Description |
---|
JSONArray(int initialCapacity,
JSONConfig config)
构造
默认使用 ArrayList 实现 |
JSONArray(JSONConfig config)
构造
默认使用 ArrayList 实现 |
JSONFactory(JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
构造
|
JSONObject(int capacity,
JSONConfig config)
构造
|
JSONObject(JSONConfig config)
构造
|
JSONPrimitive(Object value,
JSONConfig config)
构造
|
Modifier and Type | Method and Description |
---|---|
default JSONConfig |
JSONContext.config()
获取JSON配置
|
Modifier and Type | Method and Description |
---|---|
static CopyOptions |
InternalJSONUtil.toCopyOptions(JSONConfig config)
将
JSONConfig 参数转换为Bean拷贝所用的CopyOptions |
Constructor and Description |
---|
JSONNodeBeanFactory(JSONConfig config)
构造
|
Modifier and Type | Method and Description |
---|---|
JSONConfig |
JSONWriter.getConfig()
获取JSON配置
|
Modifier and Type | Method and Description |
---|---|
static JSONWriter |
JSONWriter.of(Appendable appendable,
int indentFactor,
int level,
JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
创建JSONWriter
|
static JSONWriter |
JSONWriter.of(Appendable appendable,
int indentFactor,
JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
创建JSONWriter
|
Constructor and Description |
---|
JSONWriter(Appendable appendable,
JSONFormatStyle formatStyle,
int level,
JSONConfig config,
Predicate<MutableEntry<Object,Object>> predicate)
构造
|
Copyright © 2025. All rights reserved.