You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何用字典高效生成指定API JSON payload并写入文件?

如何将Python字典和列表转换为指定格式的API JSON Payload

核心方案:直接构造Python数据结构再序列化

不需要先写入文件再读取,直接在内存中构造符合要求的Python对象,再转成JSON字符串,这是最高效的方式,适合直接作为API请求的payload发送。

代码实现

import json

# 你的原始数据
pn_and_mfgr_dict = {'SAMPLE-ITEM-1': 'SAMPLE-MANUFACTURER-1', 'SAMPLE-ITEM-2': 'SAMPLE-MANUFACTURER-2'}
quantities = ["1","3"] 
poid = 22130

# 组装inventory列表
inventories = []
# 用zip匹配字典键值对和对应的数量(Python3.7+字典保留插入顺序)
for (item, mfgr), qty in zip(pn_and_mfgr_dict.items(), quantities):
    inventories.append({
        "item": item,
        "mfgr": mfgr,
        "quantity": qty,
        "condition": "REF"
    })

# 构造完整的payload结构
payload_structure = [
    {
        "poid": str(poid),  # 转为字符串匹配API要求的格式
        "inventories": inventories
    }
]

# 生成JSON字符串,直接用于API调用
payload_json = json.dumps(payload_structure, indent=2)
# 可直接打印查看结果
print(payload_json)

# 若需写入JSON文件,用json.dump更高效
with open('api_payload.json', 'w', encoding='utf-8') as f:
    json.dump(payload_structure, f, indent=2, ensure_ascii=False)

关键说明

  • 顺序匹配:Python 3.7及以上版本的普通字典会保留键的插入顺序,因此zip(pn_and_mfgr_dict.items(), quantities)能准确对应每个物料和其数量。如果使用Python3.6及以下版本,需要改用collections.OrderedDict存储pn_and_mfgr_dict来保证顺序。
  • 类型匹配:API示例中poid是字符串类型,所以需要将整数poid转为字符串,避免JSON序列化后出现数值类型不匹配的问题。
  • 高效序列化:
    • 直接生成JSON字符串:json.dumps将Python对象转为字符串,可直接作为API请求的body发送,省去文件IO步骤,性能更优。
    • 写入文件:使用json.dump而非先转字符串再写入,因为json.dump会直接将对象序列化到文件流,减少内存占用,适合处理大数据量的情况。

关于原始数据存储的优化建议

当前的pn_and_mfgr_dict+quantities组合是可行的,但如果在生成数据的阶段,能直接将物料信息(item、mfgr、quantity)组装成列表字典(如下),会更直观,后续构造payload时也无需额外匹配:

# 优化后的原始数据结构示例
inventory_data = [
    {"item": "SAMPLE-ITEM-1", "mfgr": "SAMPLE-MANUFACTURER-1", "quantity": "1"},
    {"item": "SAMPLE-ITEM-2", "mfgr": "SAMPLE-MANUFACTURER-2", "quantity": "3"}
]

这种结构下,构造inventories只需给每个字典添加固定的"condition": "REF"即可,代码会更简洁。

内容的提问来源于stack exchange,提问作者Wes Graham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:25:21