Python递归遍历JSON并修剪字符串:求去除多余空格的完整实现
去除JSON字符串首尾空格的完整实现方案
完整代码实现
import json def trim_json_strings(data): # 单个值的处理逻辑 def process_value(value): if isinstance(value, str): return value.strip() elif isinstance(value, dict): return trim_json_strings(value) # 非字符串、非字典的类型(如数字、布尔值)直接返回 return value # 遍历所有键值对,返回处理后的新字典 return {key: process_value(value) for key, value in data.items()} # 你的输入JSON字符串 input_json = '''{"main": "test ","title": {"title": "something. ","textColor": "Dark"},"background": {"color": "White "}}''' # 步骤1:将JSON字符串解析为Python字典 parsed_dict = json.loads(input_json) # 步骤2:递归去除所有字符串首尾空格 trimmed_dict = trim_json_strings(parsed_dict) # 步骤3:将处理后的字典转回JSON字符串 output_json = json.dumps(trimmed_dict) # 输出结果 print(output_json)
原代码存在的问题
你的递归函数仅做了键值对打印,没有修改原字典或生成新的结构化数据,因此无法得到可输出的目标JSON。核心问题是:
- 没有保存递归处理后的子字典结果
- 未构建完整的处理后字典结构,仅输出零散的键值
实现逻辑说明
- JSON与Python字典互转:使用
json.loads()将输入JSON转为Python字典(方便操作),处理完成后用json.dumps()转回JSON字符串。 - 递归处理逻辑:
- 对每个值判断类型:字符串则执行
strip()去除首尾空格;字典则递归调用处理函数;其他类型(如数字、布尔值)保持原样。 - 用字典推导式生成新字典,避免修改原始输入数据。
- 对每个值判断类型:字符串则执行
- 结果输出:处理后的字典转为JSON字符串后,就是你需要的去除多余空格的目标JSON。
运行上述代码后,输出结果为:
{"main": "test","title": {"title": "something.","textColor": "Dark"},"background": {"color": "White"}}
内容的提问来源于stack exchange,提问作者sadat
相关产品推荐
相关产品推荐

