Shopify 产品创建 422:"You need to add option values for [option name]"

Shopify product creation 422: "You need to add option values for [option name]"

更新:已解决。编码错误导致 variants 被包裹在一个额外的列表中,产生一个语法上有效但语义上无效(对于 Shopify)的 JSON 对象。


我正在尝试在 Shopify 上创建具有多个选项和多个变体的产品。一切顺利,除了我在产品选项上被绊倒了。

我正在POSTJSON的相关部分如下:

"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.

当我 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 有什么问题,如果能给我一些建议或正确的指示,我将不胜感激。


这是我到达现在位置的方式:

最后一点尤其让我怀疑某种语法错误 - 第一个选项没有正确关闭的带括号的东西,读取接下来的两个选项作为其选项值,然后剩下两个在寒冷中。但是我已经 运行 这个 JSON 通过解析器和格式化程序,它似乎可以检查。此外,谷歌搜索 Shopify "You have to add option values for" returns 正好是 0 次匹配,引号完好无损。

锦上添花的是 Shopify 的官方文档似乎甚至不需要 "options" 块 - 请参阅 "Create a new product with multiple product variants" here - 但 Shopify 上的人 API 论坛和其他地方表明这是绝对必要的。

我觉得我在这里犯了一个简单的错误,但我终究找不到。任何指针将不胜感激。

是否有可能其中一个变体缺少 option3options2 属性?这是一个包含众多选项的产品的最小示例:

{
    "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": ... } 对象中发送产品数据。此外,您样本中的变体数据似乎有太多括号。尝试像我的示例一样将变体包含在一组方括号中。