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

Lighthouse PHP中传入JSON类型参数执行mutation报错如何解决?

错误原因及解决方案

1. 明确的语法错误

你传入的config参数的JSON结构存在语法疏漏:第二个data数组里的"name": "name3"行末尾缺少英文逗号,直接导致整个表达式解析失败,这是编辑器全量标红的直接诱因。

// 错误代码片段
{
  "name": "name3"
  "quantity": 1
}
// 修正后
{
  "name": "name3",
  "quantity": 1
}

2. GraphQL输入语法不规范

GraphQL的参数传递规则和纯JSON不同:直接写在请求体里的对象/数组,键名不需要加双引号包裹,你给所有键都加了双引号,不符合GraphQL的语法要求。

修正后的可执行写法

有两种常用的正确写法:

写法1:直接调整参数语法(适合简单测试)

把所有对象的键名的双引号去掉,补全遗漏的逗号即可:

mutation {
  createOrderTemplate(
    name: "SomeName",
    config: [
      {
        w_name: "Name1",
        w_code: "001",
        place: "Place1",
        job: "job1",
        data: [
          {
            name: "name1",
            quantity: 2
          },
          {
            name: "name2",
            quantity: 2
          },
          {
            name: "name3",
            quantity: 1
          },
          {
            name: "name4",
            quantity: 2
          }
        ]
      },
      {
        w_name: "Name2",
        w_code: "002",
        place: "Place2",
        job: "job2",
        data: [
          {
            name: "name1",
            quantity: 2
          },
          {
            name: "name2",
            quantity: 2
          },
          {
            name: "name3",
            quantity: 1
          },
          {
            name: "name4",
            quantity: 2
          }
        ]
      }
    ]
  ) {
    id
    name
    config
  }
}

写法2:通过变量传递JSON(推荐,复杂度高的结构不容易出错)

在playground的Variables面板写入纯JSON格式的config值,请求体直接引用变量即可:

# 请求体
mutation CreateOrderTemplate($name: String!, $config: JSON!) {
  createOrderTemplate(name: $name, config: $config) {
    id
    name
    config
  }
}
// Variables面板内容
{
  "name": "SomeName",
  "config": [
    {
      "w_name": "Name1",
      "w_code": "001",
      "place": "Place1",
      "job": "job1",
      "data": [
        {"name": "name1", "quantity": 2},
        {"name": "name2", "quantity": 2},
        {"name": "name3", "quantity": 1},
        {"name": "name4", "quantity": 2}
      ]
    },
    {
      "w_name": "Name2",
      "w_code": "002",
      "place": "Place2",
      "job": "job2",
      "data": [
        {"name": "name1", "quantity": 2},
        {"name": "name2", "quantity": 2},
        {"name": "name3", "quantity": 1},
        {"name": "name4", "quantity": 2}
      ]
    }
  ]
}

额外注意事项

确认你的Laravel模型里已经把config字段添加到$casts数组,配置为array或者json类型,否则存入数据库时会出现格式错误:

// OrderTemplate模型中添加
protected $casts = [
    'config' => 'array',
];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:57:03