我有一个这样的数组:
$errors[] = "Field not correct.";
我想返回一个 json 编码为: {"errore" : "Field not correct"}
这是我的代码:
return json_encode(array("error" => serialize($errors)));
但我得到:
{
"error": "a:1:{i:0;s:21:"Field not correct.";}"
}
如何避免响应中a:1:{i:0;s:21
符号?
您需要
删除serialize
并且仅使用json_encode
。
$errors[] = "Field not correct.";
return json_encode(["error" => $errors]);
请注意,这将有一个错误数组,这是由于您首先将错误字符串放入数组的方式。
如果只有一个错误消息,则不要使用 $errors
数组。
$error = "Field not correct.";
return json_encode(["error" => $error]);
有关这两个选项,请参阅此处:https://3v4l.org/JQVNA
只是不要调用serialize
(这会将其转换为特定于PHP的字符串格式)。
直接将 PHP 数据结构传递给 json_encode
(这会将其转换为标准字符串格式)。
问题是,您可能会遇到多个错误,但您提供的格式仅支持一个错误。 $errors
可以有多个条目。 {"errore" : ".."}
只能保留一条消息。
所以你有一些选择:
仅使用$errors
中的第一个错误
return json_encode(array("error" => $errors[0]));
将错误与某些功能(即 join
)
return json_encode(array("error" => join(',', $errors)));
更改输出格式以支持多个错误
return json_encode(array("error" => $errors));
这将导致一个 JSON 字符串,例如
{"errore" : ['msg', ...]}