【发布时间】:2016-12-06 00:18:31
【问题描述】:
更新:已解决。一个编码错误导致 variants 被包装在一个附加列表中,从而产生了一个语法有效但语义无效(对于 Shopify)的 JSON 对象。
我正在尝试在 Shopify 上创建具有多个选项和多个变体的产品。一切都很顺利,除了我在产品选项上被绊倒了。
我发布的 JSON 的相关部分如下:
"options":[
{
"position":1,
"name":"Style"
},
{
"position":2,
"name":"Size"
},
{
"position":3,
"name":"Color"
}
每个变体看起来像这样:
{
"price":"##.##",
"option2":"S",
"compare_at_price":"##",
"weight_unit":"lb",
"option3":"Black",
"old_inventory_quantity":1,
"option1":"Men's Premium T-Shirt",
"inventory_management":null,
"weight":0.0,
"title":"Men's Premium T-Shirt / S / Black",
"requires_shipping":true,
"inventory_quantity":1,
"fulfillment_service":"manual"
},
Here's a link to the entire JSON I'm attempting to POST.
当我将此 JSON 发布到 https://STORE_NAME.myshopify.com/admin/products.json 时,我收到 422 状态代码和以下错误消息:
{'errors': {'base': ['You need to add option values for Size', 'You need to add option values for Color']}}
我不确定我发送的 JSON 有什么问题,我希望能得到一些建议或指向正确方向的指针。
我是这样到达现在的位置的:
- 尝试在字典中没有
"options"条目的情况下进行 POST,给了我一个'The variant 'Men's Premium T-Shirt' already exists'形式的错误;对此进行研究后,我介绍了"options"条目。 - 我一开始只使用
"options": {"name": "Style", "name": "Color", "name": "Size"},但这创建了一个只有一个变体的产品 - “默认标题”。 - 删除样式选项会给我一个关于颜色的错误消息。删除大小也会创建一个变体“默认标题”产品。
最后一点特别让我怀疑某种语法错误 - 括号中的第一个选项没有正确关闭,读取接下来的两个选项作为它的选项值,然后接下来的两个被遗漏寒冷。但是我已经通过解析器和格式化程序运行了这个 JSON,它似乎已经检查过了。此外,在谷歌上搜索 Shopify "You have to add option values for" 会准确返回 0 个匹配项,而引号保持不变。
锦上添花的是,Shopify 的官方文档似乎甚至不需要“选项”块 - 请参阅“创建具有多个产品变体的新产品”here - 但 Shopify 的 API 论坛和其他地方的人们表示这是绝对必要的。
我觉得我在这里犯了一个简单的错误,但我一辈子都找不到它。任何指针将不胜感激。
【问题讨论】:
标签: json python-requests shopify