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

Shopware 6 Product API POST请求报Cannot unset string offsets错误如何排查

Shopware 6 Product API POST请求500错误解决方案

错误原因定位

本次返回Cannot unset string offsets错误的根本原因是请求体中多个字段类型不符合Shopware 6 API的规范要求,系统预期接收数组/对象类型的字段被传入了字符串,触发PHP底层类型操作异常:

  • price字段:Shopware 6要求该字段为价格对象数组,你的请求中传入了单个对象
  • images、拼写错误的atributes字段:系统预期为数组类型,你传入了空字符串"",系统尝试对字符串执行数组键删除操作时触发报错
  • 其他关联错误:主键字段名错误(应为id而非productId)、categoryId传入数字字符串而非UUID格式、数值类型字段(minPurchase、stock、价格相关字段)传入了字符串格式

具体修复步骤

修正后的请求体参考如下,根据你的实际业务调整参数即可:

{
    "id":"fd1be1ea-884a-4049-b143-605d8dfaa589",
    "name":"Sorelie",
    "taxId":"f68a9c3c-8686-4c2e-a759-7062fc457cf7",
    "productNumber":"16345583549",
    "minPurchase":1,
    "purchasePrice":0,
    "price":[
        {
            "currencyId":"b7d2554b-0ce8-47cd-82f3-ac9bd1c0dfca",
            "net":0,
            "gross":0,
            "linked": true
        }
    ],
    "stock":0,
    "categories": [
        {"id": "替换为对应分类的UUID值"}
    ]
}

修改点说明:

  • 主键字段改为id,普通产品无需传入parentId,仅变体产品需要关联父产品ID时传入
  • price改为数组格式,数值类型字段去掉字符串引号直接传数字
  • 删除不需要的空字符串字段,不需要的字段可以直接不传,如需传空值需传入空数组[]而非空字符串
  • 分类关联改为categories数组,传入正确的分类UUID,不可使用数字ID

通用排查路径

  • 开启调试模式:修改站点根目录.env文件,将APP_ENV的值改为dev,再次发起请求即可获取完整错误堆栈,直接定位报错的具体代码位置和关联字段
  • 校验字段规范:访问本地部署的swagger接口文档(路径为/api/_info/swagger.html),查看Product实体的完整字段定义,确认每个字段的类型、必填要求
  • 最小化测试:调试时先仅传入必填字段,请求成功后再逐步添加其他字段,快速定位问题字段

内容的提问来源于stack exchange,提问作者Grimclaw Draven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:27:00