如何用Python将JSON中FEE_*字段转为指定字典格式?
问题描述
我有如下JSON数据:
[ { "TX_ID": "C592096166066790609734", "FEE_1": 0.25, "FEE_7": 0.95, "USAGE": "Yzua12" }, { "TX_ID": "C636460166108115381222", "FEE_1": 0.35, "FEE_3": 1.39, "USAGE": "Yzua13" } ]
需要用Python处理该数据,将所有以FEE_开头的字段的值转换为{"set": 原值}的字典格式,TX_ID和USAGE字段保持原有格式不变,预期结果如下:
[ { "TX_ID": "C592096166066790609734", "FEE_1": {"set":0.25}, "FEE_7": {"set":0.95}, "USAGE": "Yzua12" }, { "TX_ID": "C636460166108115381222", "FEE_1": {"set":0.35}, "FEE_3": {"set":1.39}, "USAGE": "Yzua13" } ]
解决方案
处理代码
import json # 原始JSON数据(若从文件读取,替换为json.load(open("你的文件路径.json"))) raw_data = ''' [ { "TX_ID": "C592096166066790609734", "FEE_1": 0.25, "FEE_7": 0.95, "USAGE": "Yzua12" }, { "TX_ID": "C636460166108115381222", "FEE_1": 0.35, "FEE_3": 1.39, "USAGE": "Yzua13" } ] ''' # 解析JSON为Python数据结构 data = json.loads(raw_data) # 逐个处理每条数据 processed_data = [] for item in data: new_item = {} for key, val in item.items(): if key.startswith("FEE_"): new_item[key] = {"set": val} else: new_item[key] = val processed_data.append(new_item) # 输出格式化后的结果(若要保存为文件,用json.dump(processed_data, open("结果文件.json", "w"), indent=2)) print(json.dumps(processed_data, indent=2))
逻辑说明
- JSON解析:使用
json.loads将JSON字符串转为Python可操作的列表和字典;如果是从本地文件读取数据,直接用json.load()读取文件对象即可。 - 字段判断与转换:遍历每条数据的键值对,通过
startswith("FEE_")判断目标字段,将符合条件的值包装成指定格式的字典,其他字段直接保留原值。 - 结果输出:用
json.dumps将处理后的Python结构转回格式化的JSON字符串,方便查看或保存到文件。
内容的提问来源于stack exchange,提问作者losforword
相关产品推荐
相关产品推荐

