hutool.json¶
Module Contents¶
Classes¶
JSON工具类,提供 JSON 的解析、序列化、校验、路径操作等功能。 |
Functions¶
递归将 XML Element 转为字典。 |
API¶
- hutool.json._element_to_dict(element: xml.etree.ElementTree.Element)¶
递归将 XML Element 转为字典。
- 参数:
element – XML 元素
- 返回:
转换后的字典或字符串
- class hutool.json.JSONUtil¶
JSON工具类,提供 JSON 的解析、序列化、校验、路径操作等功能。
- static create_obj() dict¶
创建空JSON对象。
- 返回:
空字典
- static create_array() list¶
创建空JSON数组。
- 返回:
空列表
- static parse_obj(json_str: str) dict¶
解析JSON字符串为字典。
- 参数:
json_str – JSON字符串
- 返回:
字典
- 抛出:
ValueError – JSON字符串不是对象类型时
- static parse_array(json_str: str) list¶
解析JSON字符串为列表。
- 参数:
json_str – JSON字符串
- 返回:
列表
- 抛出:
ValueError – JSON字符串不是数组类型时
- static parse(json_str: str)¶
解析JSON字符串,自动返回对应Python类型。
- 参数:
json_str – JSON字符串
- 返回:
解析后的Python对象
- static to_json_str(obj: Any, indent: Optional[int] = None) str¶
对象转JSON字符串。
- 参数:
obj – 待序列化的对象
indent – 缩进空格数,None表示不缩进
- 返回:
JSON字符串
- static to_json_pretty_str(obj: Any) str¶
对象转格式化JSON字符串(缩进2空格)。
- 参数:
obj – 待序列化的对象
- 返回:
格式化的JSON字符串
- static to_bean(json_str: str, bean_class: Type)¶
JSON字符串转对象。
将JSON解析为字典后,通过
bean_class(**dict)构造实例。 如果 bean_class 提供了from_dict类方法,则优先调用。- 参数:
json_str – JSON字符串
bean_class – 目标类型
- 返回:
目标类型的实例
- static to_bean_list(json_str: str, element_class: Type) list¶
JSON字符串转对象列表。
- 参数:
json_str – JSON字符串(数组格式)
element_class – 元素目标类型
- 返回:
对象列表
- 抛出:
ValueError – JSON字符串不是数组类型时
- static from_bean(obj: Any) str¶
对象转JSON字符串。
如果对象具有
to_dict方法则先调用,否则直接序列化。- 参数:
obj – 待序列化的对象
- 返回:
JSON字符串
- static read_json(path: str, charset: str = 'utf-8')¶
读取JSON文件并解析。
- 参数:
path – 文件路径
charset – 文件编码
- 返回:
解析后的Python对象
- static read_json_object(path: str, charset: str = 'utf-8') dict¶
读取JSON文件为字典。
- 参数:
path – 文件路径
charset – 文件编码
- 返回:
字典
- 抛出:
ValueError – JSON文件内容不是对象类型时
- static read_json_array(path: str, charset: str = 'utf-8') list¶
读取JSON文件为列表。
- 参数:
path – 文件路径
charset – 文件编码
- 返回:
列表
- 抛出:
ValueError – JSON文件内容不是数组类型时
- static write_json(path: str, obj: Any, charset: str = 'utf-8', indent: Optional[int] = None) None¶
写入JSON文件。
- 参数:
path – 文件路径
obj – 待写入对象
charset – 文件编码
indent – 缩进空格数,None表示不缩进
- static is_json(str_val: str) bool¶
是否为有效JSON。
- 参数:
str_val – 待检查的字符串
- 返回:
是否为有效JSON
- static is_json_obj(str_val: str) bool¶
是否为JSON对象。
- 参数:
str_val – 待检查的字符串
- 返回:
是否为JSON对象
- static is_json_array(str_val: str) bool¶
是否为JSON数组。
- 参数:
str_val – 待检查的字符串
- 返回:
是否为JSON数组
- static format_json(json_str: str, indent: int = 2) str¶
格式化JSON字符串。
- 参数:
json_str – JSON字符串
indent – 缩进空格数
- 返回:
格式化后的JSON字符串
- static compress(json_str: str) str¶
压缩JSON(去除所有空白)。
- 参数:
json_str – JSON字符串
- 返回:
压缩后的JSON字符串
- static _parse_path_keys(path: str) List[Union[str, int]]¶
将路径字符串解析为键列表。
例如
'a.b[0].c'解析为['a', 'b', 0, 'c']- 参数:
path – 路径字符串
- 返回:
键列表
- static get_by_path(json_data: Any, path: str) Any¶
按路径获取值
- 参数:
json_data – JSON数据(字典或列表)
path – 路径,如 ‘a.b.c’ 或 ‘a[0].b’
- 返回:
对应路径的值,路径不存在时返回 None
- static put_by_path(json_data: Any, path: str, value: Any) None¶
按路径设置值
- 参数:
json_data – JSON数据(字典或列表)
path – 路径,如 ‘a.b.c’ 或 ‘a[0].b’
value – 要设置的值
- static map_dict_keys(func: Callable, obj: Any) Any¶
递归映射 JSON 对象(字典)的所有键名。
对嵌套的字典和列表递归处理。
Examples:
map_dict_keys(str.upper, {"a": 1, "b": {"c": 2}}) -> {"A": 1, "B": {"C": 2}}
- 参数:
func – 键名映射函数
obj – JSON 对象(字典)或列表
- 返回:
映射后的新对象
- static map_list_keys(func: Callable, lst: list) list¶
递归映射列表中所有字典的键名。
- 参数:
func – 键名映射函数
lst – 列表
- 返回:
映射后的新列表
- static convert_keys_to_camel(obj: Dict) Dict¶
将 JSON 对象的所有键名从
snake_case转为camelCase。Examples:
convert_keys_to_camel({"user_name": "Tom", "home_addr": {"zip_code": "100000"}}) -> {"userName": "Tom", "homeAddr": {"zipCode": "100000"}}
- 参数:
obj – 字典对象
- 返回:
键名转换后的新字典
- static convert_keys_to_snake(obj: Dict) Dict¶
将 JSON 对象的所有键名从
camelCase转为snake_case。Examples:
convert_keys_to_snake({"userName": "Tom", "homeAddr": {"zipCode": "100000"}}) -> {"user_name": "Tom", "home_addr": {"zip_code": "100000"}}
- 参数:
obj – 字典对象
- 返回:
键名转换后的新字典
- static quote(s: str) str¶
用双引号包裹字符串并进行JSON转义
- 参数:
s – 原始字符串
- 返回:
JSON引号包裹的字符串
- static escape(s: str) str¶
JSON字符串转义
将特殊字符转为JSON转义序列。
- 参数:
s – 原始字符串
- 返回:
转义后的字符串
- static is_null(json_str: str) bool¶
判断JSON字符串是否为null
- 参数:
json_str – JSON字符串
- 返回:
是否为null
- static xml_to_json(xml_str: str) dict¶
XML字符串转JSON字典
简单的XML到字典转换。
- 参数:
xml_str – XML字符串
- 返回:
转换后的字典
- static to_json_bytes(obj: Any, charset: str = 'utf-8') bytes¶
对象转JSON字节数组
- 参数:
obj – 待序列化对象
charset – 字符集
- 返回:
JSON字节数组
- static wrap(obj: Any) str¶
将对象包装为JSON字符串(to_json_str别名)
- 参数:
obj – 对象
- 返回:
JSON字符串
- static get_str(json_data: dict, key: str, default: str = '') str¶
从JSON对象获取字符串值
- 参数:
json_data – JSON字典
key – 键名
default – 默认值
- 返回:
字符串值
- static get_int(json_data: dict, key: str, default: int = 0) int¶
从JSON对象获取整数值
- 参数:
json_data – JSON字典
key – 键名
default – 默认值
- 返回:
整数值
- static get_float(json_data: dict, key: str, default: float = 0.0) float¶
从JSON对象获取浮点值
- 参数:
json_data – JSON字典
key – 键名
default – 默认值
- 返回:
浮点值
- static get_bool(json_data: dict, key: str, default: bool = False) bool¶
从JSON对象获取布尔值
- 参数:
json_data – JSON字典
key – 键名
default – 默认值
- 返回:
布尔值
- static get_list(json_data: dict, key: str, default: Optional[list] = None) list¶
从JSON对象获取列表值
- 参数:
json_data – JSON字典
key – 键名
default – 默认值
- 返回:
列表值
- static parse_from_xml(xml_str: str) dict¶
将 XML 字符串解析为字典。
- 参数:
xml_str – XML 字符串
- 返回:
解析后的字典
- static get_ordered_json(s: str) str¶
获取排序键名后的 JSON 字符串(用于比较)。
- 参数:
s – JSON 字符串
- 返回:
排序键名后的 JSON 字符串
- static json_equal(s1: str, s2: str) bool¶
比较两个 JSON 是否语义相等(忽略键顺序)。
- 参数:
s1 – JSON 字符串 1
s2 – JSON 字符串 2
- 返回:
是否相等
- static json_keys_equal(s1: str, s2: str) bool¶
比较两个 JSON 的键集合是否相等(仅对象类型)。
- 参数:
s1 – JSON 字符串 1
s2 – JSON 字符串 2
- 返回:
键集合是否相等