如何修改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
相关产品推荐
相关产品推荐

