更新:已解决。编码错误导致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,它似乎已经结束了。此外,Google Shopify "You have to add option values for"
的Google搜索确切返回0次点击,引号保持不变。
锦上添花的是,Shopify的官方文档似乎甚至不需要“选项”块 - 请参阅“创建具有多种产品变体的新产品”here - 但Shopify API论坛上的人员和其他地方表明这是绝对必要的。
我觉得我在这里犯了一个简单的错误,但对于我的生活,我找不到它。任何指针都会非常感激。
答案 0 :(得分:1)
其中一个变体是否可能缺少option3
或options2
属性?以下是具有多种选项的产品的最小示例:
{
"product": {
"title": "Cool shirt",
"variants": [{
"price": "4.00",
"option1": "big",
"option2": "mauve"
}, {
"price": "2.00",
"option1": "big",
"option2": "iridescent"
}, {
"price": "5.00",
"option1": "small",
"option2": "mauve"
}, {
"price": "1.00",
"option1": "small",
"option2": "iridescent"
}],
"options": [{
"name": "Size",
"position": 1
}, {
"name": "Color",
"position": 2
}]
}
}
编辑: 感谢发布示例。您应该在{"product": ... }
对象中发送产品数据。此外,您的示例中的变体数据看起来周围有太多括号。尝试将变体包含在我的示例中的一组方括号中。