如何将SQL导出的JSON数据包装为以products为键的结构?
给JSON文件添加"products"主键包装的方法
首先注意:你给出的目标JSON存在语法错误——"products"对应的两个对象没有用数组[]包裹,这会导致JSON解析失败。正确的目标结构应该是"products"对应一个产品对象数组,示例如下:
[ { "products": [ { "type": "N1001", "view_code": "english", "short": "xy", "product": "simple", "amount": "4" }, { "type": "N1001", "view_code": "english", "short": "xy", "product": "simple", "amount": "4" } ] } ]
下面提供两种实现方法:
方法一:手动修改(适合少量文件)
- 先修正原JSON的语法问题:删除原数组中最后一个对象末尾的多余逗号(原示例里
"amount": "4"后面的逗号会导致JSON解析错误)。 - 将原数组内的所有产品对象,整体放到一个新数组中。
- 创建一个新对象,添加
"products"键,值为刚才的新数组。 - 把这个新对象放入外层数组,完成包装。
方法二:Python脚本自动处理(适合批量或大量数据)
如果需要处理多个文件或大量数据,用脚本效率更高:
import json # 读取原JSON文件 with open('input.json', 'r', encoding='utf-8') as f: # 若原JSON有多余逗号,可改用demjson库解析:import demjson; original_data = demjson.decode(f.read()) original_data = json.load(f) # 构造新的JSON结构 target_data = [{"products": original_data}] # 若需要统一修改type字段为"N1001",执行以下循环 for product in target_data[0]["products"]: product["type"] = "N1001" # 写入到新文件 with open('output.json', 'w', encoding='utf-8') as f: json.dump(target_data, f, indent=2)
内容的提问来源于stack exchange,提问作者wayx
相关产品推荐
相关产品推荐

