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

如何修改PHP代码以输出符合要求的JSON Schema?

问题:生成符合要求的JSON结构(PHP)

目标JSON结构

需要输出的JSON结构如下:

{"lots":[{"Id":32932,"Type":"G","x":1,"y":2,"z":3},{"Id":32933,"Type":"R","x":4,"y":5,"z":6}]}

当前错误的PHP代码及输出

错误代码

$lots = array("lots");

$lots[] = array("Id" => 32932, "Type" => "G", "x" => 1, "y" => 2, "z" => 3);
$lots[] = array("Id" => 32933, "Type" => "R", "x" => 4, "y" => 5, "z" => 6);

$json = json_encode($lots);

echo $json;

错误输出

["lots",{"Id":32932,"Type":"G","x":1,"y":2,"z":3},{"Id":32933,"Type":"R","x":4,"y":5,"z":6}]

报错信息

ArgumentException: JSON must represent an object type.

解决方案

当前代码生成的是索引数组(对应JSON数组),但目标结构是JSON对象——外层以lots为键,对应的值是包含两个元素的数组。修改PHP代码如下:

// 定义lots对应的数组内容
$lotItems = [
    ["Id" => 32932, "Type" => "G", "x" => 1, "y" => 2, "z" => 3],
    ["Id" => 32933, "Type" => "R", "x" => 4, "y" => 5, "z" => 6]
];

// 外层构造关联数组,键为lots
$result = ["lots" => $lotItems];

// 编码并输出JSON
echo json_encode($result);

也可以写成更简洁的形式:

echo json_encode([
    "lots" => [
        ["Id" => 32932, "Type" => "G", "x" => 1, "y" => 2, "z" => 3],
        ["Id" => 32933, "Type" => "R", "x" => 4, "y" => 5, "z" => 6]
    ]
]);

修改后生成的JSON会和目标结构完全一致,满足C# Unity项目的格式要求,解决报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:18:17