import json class ObjectToJsonArrayConverter: """ 将Python对象转换为特定结构的JSON数组。 """ @staticmethod def convert(obj): """ 递归转换对象为JSON数组结构。 Args: obj: 待转换的Python对象(dict/list/其他) Returns: list: 转换后的结构,每个元素为 {"key": key, "value": processed_value} """ def _process(value, in_list_context): """处理值,根据是否在列表环境中决定包装逻辑""" if isinstance(value, dict): # 字典递归转换为列表结构 return ObjectToJsonArrayConverter.convert(value) if isinstance(value, list): # 列表递归处理,子元素默认在列表环境中 return [_process(item, in_list_context=True) for item in value] # 普通值:列表环境中不包装,否则包装为单元素列表 return value if in_list_context else [value] # 处理外层对象 if isinstance(obj, dict): return [{"key": k, "value": _process(v, False)} for k, v in obj.items()] if isinstance(obj, list): return [{"key": None, "value": _process(item, True)} for item in obj] return [] # 非dict/list返回空(根据原逻辑) @staticmethod def to_json(obj, indent=None): """ 转换为JSON字符串。 Args: obj: 待转换对象 indent: 缩进量(默认无缩进) Returns: str: JSON字符串 """ return json.dumps( ObjectToJsonArrayConverter.convert(obj), indent=indent, ensure_ascii=False ) # 测试代码 if __name__ == "__main__": test_obj = [ {"name": "Alice"}, [{"age": 30}, "直接值"] ] print(ObjectToJsonArrayConverter.to_json(test_obj, indent=4))