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.engine.jackson |
Jackson引擎实现
https://github.com/FasterXML/jackson |
org.dromara.hutool.json.reader |
JSON读取和解析,主要解析字符串、流等JSON字符串为
JSON 。 |
org.dromara.hutool.json.serializer |
JSON序列化和反序列化,提供对象和JSON之间的转换,我们定义:
1.
|
org.dromara.hutool.json.serializer.impl |
默认实现的序列化和反序列化
|
org.dromara.hutool.json.support |
JSON的支持类,如用于转换和BeanPath操作的对象,还有用于格式化的对象等
|
org.dromara.hutool.json.xml |
JSON与XML相互转换封装,基于json.org官方库改造
|
Modifier and Type | Class and Description |
---|---|
class |
JSONArray
JSON数组
JSON数组是表示中括号括住的数据表现形式 对应的JSON字符串格格式例如: ["a", "b", "c", 12] |
class |
JSONObject
JSON对象
对象是 JSON 中的映射类型。 |
class |
JSONPrimitive
JSON原始类型数据封装,根据RFC8259规范,JSONPrimitive只包含以下类型:
Number
boolean
String
|
Modifier and Type | Method and Description |
---|---|
static JSON |
JSONUtil.getByPath(JSON json,
String expression)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
default JSON |
JSON.getByPath(String expression)
通过表达式获取JSON中嵌套的JSON对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
JSON |
JSONArray.getJSON(Integer key) |
JSON |
JSONGetter.getJSON(K key)
获取JSON对象
在JSON树模型中,JSON的节点都以JSON格式存储,所有get方法都基于此方法 |
JSON |
JSONObject.getJSON(String key) |
static JSON |
JSONUtil.parse(Object obj)
解析对象为JSON,持的对象:
String: 解析为相应的对象
Number、boolean: 转换为
JSONPrimitive
Array、Iterable、Iterator:转换为JSONArray
Bean对象:转为JSONObject
|
JSON |
JSONFactory.parse(Object obj)
解析对象为JSON
支持的对象: String: 转换为相应的对象 Array、Iterable、Iterator:转换为JSONArray Bean对象:转为JSONObject 注意:与 JSONFactory.toJSON(Object) 不同的是,对象如果为字符串,会被当作json字符串解析! |
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
|
JSON |
JSONObject.put(String key,
JSON value)
设置键值对到JSONObject中,在忽略null模式下,如果值为
null ,将此键移除 |
static JSON |
JSONUtil.readJSON(File file,
Charset charset)
读取JSON
|
JSON |
JSONArray.set(int index,
JSON element)
加入或者替换JSONArray中指定Index的值,如果index大于JSONArray的长度,将在指定index设置值,之前的位置填充JSONNull.Null
|
static JSON |
JSONUtil.toJSON(Object obj)
转换对象为JSON,如果用户不配置JSONConfig,则JSON的有序与否与传入对象有关。
|
JSON |
JSONFactory.toJSON(Object obj)
转换对象为JSON
支持的对象: String: 转换为 JSONPrimitive
Array、Iterable、Iterator:转换为JSONArray
Bean对象:转为JSONObject
注意;与JSONFactory.parse(Object) 不同的是,对象如果为字符串,则返回JSONPrimitive ,不会做二次解析 |
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的有序与否与传入对象有关。
|
Modifier and Type | Method and Description |
---|---|
Iterator<JSON> |
JSONArray.iterator() |
BeanPath<JSON> |
JSONFactory.ofBeanPath(String expression)
创建BeanPath,用于使用路径方式访问或设置值
|
Modifier and Type | Method and Description |
---|---|
void |
JSONArray.add(int index,
JSON element) |
boolean |
JSONArray.add(JSON element) |
static JSON |
JSONUtil.getByPath(JSON json,
String expression)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
static <T> T |
JSONUtil.getByPath(JSON json,
String expression,
T defaultValue)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
static <T> T |
JSONUtil.getByPath(JSON json,
String expression,
Type type)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
static <T> T |
JSONUtil.getObjByPath(JSON json,
String expression)
通过表达式获取JSON中嵌套的对象
.表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 表达式栗子: persion persion.name persons[3] person.friends[5].name |
static boolean |
JSONUtil.isEmpty(JSON json)
JSON对象是否为空,以下情况返回true
null isEmpty()
|
JSON |
JSONObject.put(String key,
JSON value)
设置键值对到JSONObject中,在忽略null模式下,如果值为
null ,将此键移除 |
JSON |
JSONArray.set(int index,
JSON element)
加入或者替换JSONArray中指定Index的值,如果index大于JSONArray的长度,将在指定index设置值,之前的位置填充JSONNull.Null
|
<T> T |
JSONFactory.toBean(JSON json,
Type type)
将JSON转换为指定类型的Bean对象
|
static String |
JSONUtil.toXmlStr(JSON json)
转换为XML字符串
|
Modifier and Type | Method and Description |
---|---|
boolean |
JSONArray.addAll(int index,
Collection<? extends JSON> c) |
Modifier and Type | Method and Description |
---|---|
void |
HutoolJSONSerializer.serialize(JSON json,
com.fasterxml.jackson.core.JsonGenerator jsonGenerator,
com.fasterxml.jackson.databind.SerializerProvider serializerProvider) |
Modifier and Type | Method and Description |
---|---|
JSON |
JSONParser.parse()
获取下一个值,可以是:
JSONObject
JSONArray
JSONPrimitive
null
|
Modifier and Type | Method and Description |
---|---|
void |
JSONParser.parseTo(JSON json)
解析为JSONObject或JSONArray,解析值包括:
JSONObject
JSONArray
|
Modifier and Type | Method and Description |
---|---|
JSON |
SimpleJSONContext.getContextJson() |
JSON |
JSONContext.getContextJson()
获取当前JSON对象
此对象为在Mapper时预定义的对象,用于指定序列化的JSON类型 未指定返回 null |
JSON |
JSONSerializer.serialize(V bean,
JSONContext context)
序列化实现,通过实现此方法,将指定类型的对象转换为
JSON 对象,可以:
如果为原始类型,可以转为JSONPrimitive
如果是集合或数组类,可以转为JSONArray
如果是Bean或键值对类型,可以转为JSONObject
|
JSON |
JSONMapper.toJSON(Object obj,
boolean parseIfString)
在需要的时候转换映射对象
包装包括: array or collection =》 JSONArray
map or bean =》 JSONObject
standard property (number boolean or char) =》 JSONPrimitive
String =》 parseIfString为true 时解析为JSON ,false 直接包装为JSONPrimitive
其它 =》 尝试包装为JSONObject,否则返回null
|
Modifier and Type | Method and Description |
---|---|
V |
JSONDeserializer.deserialize(JSON json,
Type deserializeType)
反序列化,通过实现此方法,自定义实现JSON转换为指定类型的逻辑
deserializeType用于指明当结果对象存在泛型时,可以获取泛型对应的实际类型 |
JSONDeserializer<Object> |
TypeAdapterManager.getDeserializer(JSON json,
Type type)
获取匹配器对应的反序列化器
|
boolean |
MatcherJSONDeserializer.match(JSON json,
Type deserializeType)
匹配反序列化器是否匹配
根据JSON的内容、类型,和目标类型,精准匹配反序列化器 |
<T> T |
JSONMapper.toBean(JSON json,
Type type)
转为实体类对象
|
Constructor and Description |
---|
SimpleJSONContext(JSON contextJson,
JSONFactory factory)
构造
|
Modifier and Type | Method and Description |
---|---|
JSON |
CalendarTypeAdapter.serialize(Calendar bean,
JSONContext context) |
JSON |
CharSequenceTypeAdapter.serialize(CharSequence bean,
JSONContext context) |
JSON |
ClassTypeAdapter.serialize(Class<?> bean,
JSONContext context) |
JSON |
DateTypeAdapter.serialize(Date bean,
JSONContext context) |
JSON |
EntryTypeAdapter.serialize(Map.Entry<?,?> bean,
JSONContext context) |
JSON |
MapTypeAdapter.serialize(Map<?,?> bean,
JSONContext context) |
JSON |
TokenerSerializer.serialize(Object bean,
JSONContext context) |
JSON |
IterTypeAdapter.serialize(Object bean,
JSONContext context) |
JSON |
EnumTypeAdapter.serialize(Object bean,
JSONContext context) |
JSON |
BeanTypeAdapter.serialize(Object bean,
JSONContext context) |
JSON |
ArrayTypeAdapter.serialize(Object bean,
JSONContext context) |
JSON |
ResourceBundleSerializer.serialize(ResourceBundle bean,
JSONContext context) |
JSON |
ResourceSerializer.serialize(Resource bean,
JSONContext context) |
JSON |
TemporalTypeAdapter.serialize(TemporalAccessor bean,
JSONContext context) |
JSON |
ThrowableTypeAdapter.serialize(Throwable bean,
JSONContext context) |
JSON |
TimeZoneTypeAdapter.serialize(TimeZone bean,
JSONContext context) |
Modifier and Type | Method and Description |
---|---|
Object |
ArrayTypeAdapter.deserialize(JSON json,
Class<?> componentType)
反序列化
|
Object |
IterTypeAdapter.deserialize(JSON json,
Class<?> collectionClass,
Type elementType)
反序列化
|
Tuple |
TupleDeserializer.deserialize(JSON json,
Type deserializeType) |
Triple<?,?,?> |
TripleDeserializer.deserialize(JSON json,
Type deserializeType) |
TimeZone |
TimeZoneTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Throwable |
ThrowableTypeAdapter.deserialize(JSON json,
Type deserializeType) |
TemporalAccessor |
TemporalTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Object |
RecordDeserializer.deserialize(JSON json,
Type deserializeType) |
Pair<?,?> |
PairDeserializer.deserialize(JSON json,
Type deserializeType) |
Map<?,?> |
MapTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Object |
KBeanDeserializer.deserialize(JSON json,
Type deserializeType) |
Object |
JSONPrimitiveDeserializer.deserialize(JSON json,
Type deserializeType) |
Object |
IterTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Object |
EnumTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Map.Entry<?,?> |
EntryTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Object |
DefaultDeserializer.deserialize(JSON json,
Type deserializeType) |
Date |
DateTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Class<?> |
ClassTypeAdapter.deserialize(JSON json,
Type deserializeType) |
CharSequence |
CharSequenceTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Calendar |
CalendarTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Object |
BeanTypeAdapter.deserialize(JSON json,
Type deserializeType) |
Object |
ArrayTypeAdapter.deserialize(JSON json,
Type deserializeType) |
boolean |
TimeZoneTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
ThrowableTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
TemporalTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
RecordDeserializer.match(JSON json,
Type deserializeType) |
boolean |
MapTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
KBeanDeserializer.match(JSON json,
Type deserializeType) |
boolean |
JSONPrimitiveDeserializer.match(JSON json,
Type deserializeType) |
boolean |
IterTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
EnumTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
EntryTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
DateTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
CharSequenceTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
CalendarTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
BeanTypeAdapter.match(JSON json,
Type deserializeType) |
boolean |
ArrayTypeAdapter.match(JSON json,
Type deserializeType) |
Map<?,?> |
MapTypeAdapter.toMap(JSON json,
Class<?> mapClass,
Type keyType,
Type valueType)
将JSON对象转换为Map
|
Modifier and Type | Method and Description |
---|---|
JSON |
JSONNodeBeanFactory.create(JSON parent,
BeanPath<JSON> beanPath) |
JSON |
JSONNodeBeanFactory.setValue(JSON bean,
Object value,
BeanPath<JSON> beanPath) |
Modifier and Type | Method and Description |
---|---|
static Map<String,JSON> |
InternalJSONUtil.createRawMap(int capacity,
JSONFactory factory)
根据配置创建对应的原始Map
|
Modifier and Type | Method and Description |
---|---|
JSON |
JSONNodeBeanFactory.create(JSON parent,
BeanPath<JSON> beanPath) |
Object |
JSONNodeBeanFactory.getValue(JSON bean,
BeanPath<JSON> beanPath) |
JSON |
JSONNodeBeanFactory.setValue(JSON bean,
Object value,
BeanPath<JSON> beanPath) |
Modifier and Type | Method and Description |
---|---|
JSON |
JSONNodeBeanFactory.create(JSON parent,
BeanPath<JSON> beanPath) |
Object |
JSONNodeBeanFactory.getValue(JSON bean,
BeanPath<JSON> beanPath) |
JSON |
JSONNodeBeanFactory.setValue(JSON bean,
Object value,
BeanPath<JSON> beanPath) |
Modifier and Type | Method and Description |
---|---|
static String |
JSONXMLUtil.toXml(JSON json)
转换JSONObject为XML
|
static String |
JSONXMLSerializer.toXml(JSON json)
转换JSONObject为XML
Convert a JSONObject into a well-formed, element-normal XML string.
|
static String |
JSONXMLUtil.toXml(JSON json,
String tagName)
转换JSONObject为XML
|
static String |
JSONXMLSerializer.toXml(JSON json,
String tagName)
转换JSONObject为XML
|
static String |
JSONXMLUtil.toXml(JSON json,
String tagName,
String... contentKeys)
转换JSONObject为XML
|
static String |
JSONXMLSerializer.toXml(JSON json,
String tagName,
String... contentKeys)
转换JSONObject为XML
|
Copyright © 2025. All rights reserved.