hutool.core.bean

Bean工具类,提供对象与字典之间的转换、属性复制等功能

Module Contents

Classes

BeanUtil

Bean工具类,提供对象属性的读写、对象与字典互转、属性复制等功能

Data

API

hutool.core.bean.T = 'TypeVar(...)'
hutool.core.bean.__all__ = ('BeanUtil',)
class hutool.core.bean.BeanUtil

Bean工具类,提供对象属性的读写、对象与字典互转、属性复制等功能

static get_field_value(bean: Any, field_name: str) Any

获取对象字段值

参数:
  • bean – 对象实例

  • field_name – 字段名

返回:

字段值,若字段不存在返回None

static set_field_value(bean: Any, field_name: str, value: Any) None

设置对象字段值

参数:
  • bean – 对象实例

  • field_name – 字段名

  • value – 要设置的值

static map_to_bean(map_data: dict, bean_class: Type[hutool.core.bean.T], ignore_error: bool = False) hutool.core.bean.T

字典转对象

参数:
  • map_data – 字典数据

  • bean_class – 目标Bean类型

  • ignore_error – 是否忽略错误,若为True则跳过无法设置的字段

返回:

Bean对象

static bean_to_map(bean: Any) dict

对象转字典,将对象中所有非下划线开头的公共属性转为字典

参数:

bean – Bean对象

返回:

字典

static copy_properties(source: Any, target: Any, *ignore_properties: str) None

复制属性,将源对象的属性值复制到目标对象

参数:
  • source – 源对象

  • target – 目标对象

  • ignore_properties – 忽略的属性名列表

static to_bean(source: Any, clazz: Type[hutool.core.bean.T], copy_options: Optional[dict] = None) hutool.core.bean.T

转为指定类型对象

参数:
  • source – 源对象或字典

  • clazz – 目标类型

  • copy_options – 复制选项字典,可包含ignore_properties列表

返回:

转换后的对象

static to_bean_list(source_list: list, clazz: Type[hutool.core.bean.T]) List[hutool.core.bean.T]

转为对象列表

参数:
  • source_list – 源列表(字典列表或对象列表)

  • clazz – 目标类型

返回:

转换后的对象列表

static is_readable_bean(obj: Any) bool

是否为可读的Bean,即拥有至少一个非下划线开头的公共属性

参数:

obj – 待检测对象

返回:

是否为可读Bean

static fill_bean_with_map(map_data: dict, bean: Any, ignore_error: bool = False) None

用字典填充Bean,将字典中的键值对设置到Bean的对应属性上

参数:
  • map_data – 字典数据

  • bean – Bean对象

  • ignore_error – 是否忽略设置错误

static is_bean(obj: Any) bool

判断对象是否为 Bean(有公共属性的对象)。

参数:

obj – 待检查的对象

返回:

是否为 Bean

static is_empty(bean: Any) bool

判断 Bean 的所有公共字段是否都为 None。

参数:

bean – Bean 对象

返回:

是否所有字段为 None

static is_not_empty(bean: Any) bool

判断 Bean 是否有非 None 字段。

参数:

bean – Bean 对象

返回:

是否有非 None 字段

static has_null_field(bean: Any) bool

判断 Bean 是否有 None 字段。

参数:

bean – Bean 对象

返回:

是否有 None 字段

static desc_for_each(obj: Any, func: callable) None

遍历对象的公共字段并应用函数。

参数:
  • obj – 对象或字典

  • func – 接受 (key, value) 参数的函数

static fill_bean(obj: Any, supplier: callable) None

用默认值填充 Bean 中为 None 的字段。

参数:
  • obj – Bean 对象

  • supplier – 接受字段名返回默认值的函数

static trim_str_fields(obj: Any) None

对 Bean 中所有字符串字段执行 strip() 去除首尾空白。

参数:

obj – Bean 对象

static copy_to_list(source_list: list, clazz: Type[hutool.core.bean.T]) List[hutool.core.bean.T]

将字典列表拷贝为指定类型的对象列表。

等价于 to_bean_list()

参数:
  • source_list – 字典列表

  • clazz – 目标类型

返回:

对象列表

static has_setter(bean: Any, field: str) bool

判断 Bean 是否有指定字段的 setter。

参数:
  • bean – Bean 对象或类

  • field – 字段名

返回:

是否有 setter

static has_getter(bean: Any, field: str) bool

判断 Bean 是否有指定字段的 getter。

参数:
  • bean – Bean 对象或类

  • field – 字段名

返回:

是否有 getter

static has_public_field(bean: Any, field: str) bool

判断 Bean 是否有指定的公共字段。

参数:
  • bean – Bean 对象

  • field – 字段名

返回:

是否有公共字段

static create_dyna_bean(clazz: Optional[type] = None) Any

创建动态 Bean。

若提供 clazz 则实例化该类,否则返回 SimpleNamespace。

参数:

clazz – Bean 类型,为 None 时使用 SimpleNamespace

返回:

动态 Bean 对象

static get_bean_desc(clazz: type) Dict[str, Any]

获取 Bean 的描述信息。

返回类名、模块、公共字段列表等。

参数:

clazz – Bean 类

返回:

描述字典

static get_property(bean: Any, name: str) Any

获取 Bean 属性值。

优先尝试 get_<name> 方法,再尝试直接 getattr

参数:
  • bean – Bean 对象

  • name – 属性名

返回:

属性值

static set_property(bean: Any, name: str, value: Any) None

设置 Bean 属性值。

优先尝试 set_<name> 方法,再尝试直接 setattr

参数:
  • bean – Bean 对象

  • name – 属性名

  • value – 属性值

static map_to_bean_ignore_case(map_data: dict, clazz: Type[hutool.core.bean.T]) hutool.core.bean.T

字典转对象(忽略键名大小写)。

将字典键转为小写后与 Bean 属性的小写名匹配。

参数:
  • map_data – 字典数据

  • clazz – 目标 Bean 类型

返回:

Bean 对象

static fill_bean_with_map_ignore_case(map_data: dict, bean: Any) None

用字典填充 Bean(忽略键名大小写)。

参数:
  • map_data – 字典数据

  • bean – Bean 对象

static to_bean_ignore_error(source: Any, clazz: Type[hutool.core.bean.T]) hutool.core.bean.T

转为 Bean 对象,忽略转换错误。

参数:
  • source – 源对象或字典

  • clazz – 目标类型

返回:

Bean 对象

static to_bean_ignore_case(source: Any, clazz: Type[hutool.core.bean.T]) hutool.core.bean.T

转为 Bean 对象,忽略大小写。

参数:
  • source – 源对象或字典

  • clazz – 目标类型

返回:

Bean 对象

static bean_to_map_enhanced(bean: Any, is_underline: bool = True, ignore_null: bool = False) dict

对象转字典(增强版)。

参数:
  • bean – Bean 对象

  • is_underline – 是否将驼峰转为下划线

  • ignore_null – 是否忽略 None 值

返回:

字典

static copy_properties_with_options(source: Any, target: Any, copy_options: Optional[dict] = None) None

带选项的属性复制。

copy_options 支持的键: - ignore_properties: 忽略的属性名列表 - ignore_null: 是否跳过 None 值 - ignore_case: 是否忽略属性名大小写

参数:
  • source – 源对象

  • target – 目标对象

  • copy_options – 复制选项

static is_match_name(name1: str, name2: str, ignore_case: bool = True) bool

判断两个名称是否匹配。

参数:
  • name1 – 名称 1

  • name2 – 名称 2

  • ignore_case – 是否忽略大小写

返回:

是否匹配

static edit(lst: list, func: Callable[[Any], Any]) list

对 Bean 列表中的每个元素应用转换函数。

参数:
  • lst – Bean 列表

  • func – 转换函数

返回:

转换后的列表

static has_null_field_with_ignore(bean: Any, ignore_fields: Optional[List[str]] = None) bool

判断 Bean 是否有 None 字段(可指定忽略字段)。

参数:
  • bean – Bean 对象

  • ignore_fields – 要忽略的字段名列表

返回:

是否有 None 字段

static get_field_names(obj: Any) List[str]

获取对象的所有公共字段名。

参数:

obj – 对象

返回:

字段名列表

static is_common_fields_equal(obj1: Any, obj2: Any) bool

判断两个对象的公共字段值是否相等。

取两个对象字段名的交集,比较对应值。

参数:
  • obj1 – 对象 1

  • obj2 – 对象 2

返回:

公共字段是否全部相等