В соответствии с руководством на json_encode
метод может возвращать нестроковый ( false ):
Возвращает строку в кодировке JSON дляуспех или FALSE
при ошибке.
Когда это произойдет, echo json_encode($data)
выведет пустую строку, которая недопустима, JSON .
json_encode
например, сбой (и возврат false
), если его аргумент содержит строку, отличную от UTF-8.
Это условие ошибки должно быть зафиксировано в PHP, например, так:
<?php
header("Content-Type: application/json");
// Collect what you need in the $data variable.
$json = json_encode($data);
if ($json === false) {
// Avoid echo of empty string (which is invalid JSON), and
// JSONify the error message instead:
$json = json_encode(array("jsonError", json_last_error_msg()));
if ($json === false) {
// This should not happen, but we go all the way now:
$json = '{"jsonError": "unknown"}';
}
// Set HTTP response status code to: 500 - Internal Server Error
http_response_code(500);
}
echo $json;
?>
Тогда принимающая сторона, конечно, должна знать, что наличие jsonError свойство указывает на состояние ошибки, которое оно должно соответственно обработать.
В рабочем режиме может быть лучше отправить клиенту только общее состояние ошибки и записать более конкретные сообщения об ошибках для дальнейшего изучения.
Подробнее о работе с ошибками JSON см. В * 1031.* Документация PHP .