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

如何将缺失数组结构的JSON数据重构为指定SKU数组格式?

解决格式错误JSON的转换问题

问题分析

你获取的JSON存在两处语法错误:

  • 第一个对象(XYZ)的闭合}与第二个键(YYZ)之间缺失逗号
  • 第二个对象中CurrencyCode字段末尾多了一个冗余逗号

同时需要将顶层键(XYZ、YYZ)转换为每个商品的SKU字段,并整理成指定的数组结构。

解决步骤(Python实现)

  1. 修复JSON语法错误
  2. 解析修复后的JSON,遍历键值对生成目标结构
import json

# 原始格式错误的JSON字符串
original_json_str = '''{"XYZ": {
    "PromoURL": "null",
    "Z_WEEE": 0,
    "isACD": "false",
    "ProductCode": "3195",
    "ProductStatus": "Y5",
    "ListPrice": "%24885.00",
    "CurrencyCode": "$"
}
"YYZ": {
    "PromoURL": "null",
    "Z_WEEE": 0,
    "isACD": "false",
    "ProductCode": "3195",
    "ProductStatus": "Y5",
    "ListPrice": "%24225.00",
    "CurrencyCode": "$",
}'''

# 修复语法错误:补全缺失逗号,移除冗余逗号
fixed_json_str = original_json_str.replace('}\n"YYZ"', '},\n"YYZ"').replace('"$",', '"$"')

# 解析修复后的JSON
parsed_data = json.loads(fixed_json_str)

# 生成目标结构
product_list = []
for sku, product_details in parsed_data.items():
    product = {"SKU": sku}
    product.update(product_details)
    product_list.append(product)

# 包装成最终的JSON结构
final_result = {"productList": product_list}

# 打印格式化后的结果
print(json.dumps(final_result, indent=4))

输出结果

{
    "productList": [
        {
            "SKU": "XYZ",
            "PromoURL": "null",
            "Z_WEEE": 0,
            "isACD": "false",
            "ProductCode": "3195",
            "ProductStatus": "Y5",
            "ListPrice": "%24885.00",
            "CurrencyCode": "$"
        },
        {
            "SKU": "YYZ",
            "PromoURL": "null",
            "Z_WEEE": 0,
            "isACD": "false",
            "ProductCode": "3195",
            "ProductStatus": "Y5",
            "ListPrice": "%24225.00",
            "CurrencyCode": "$"
        }
    ]
}

补充说明

如果后续遇到更复杂的格式错误JSON,可以使用demjson这类容错性更强的解析库,省去手动修复语法的步骤:

pip install demjson

替换解析部分代码即可:

import demjson

parsed_data = demjson.decode(original_json_str)

内容的提问来源于stack exchange,提问作者Andrew Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:31:02