Я пытаюсь вернуть JSON из службы REST, используя этот код:
$categories = $categoriesController->listAll(); if($categories){ header($_SERVER["SERVER_PROTOCOL"] . " 200 OK"); header("Content-Type: application/json"); echo json_encode($categories,JSON_PRETTY_PRINT); }else{ }
Но я получаю эту ошибку:
json_encode () ожидает, что параметр 2 длинный, строка задана
Я видел несколько примеров, использующих один и тот же код, поэтому я не понимаю, почему я получаю эту проблему. Я был бы признателен за помощь в решении этой проблемы. Благодаря 🙂
Константа JSON_PRETTY_PRINT
доступна только для версий PHP> = 5.4. Это значение равно 128, поэтому попробуйте заменить JSON_PRETTY_PRINT
на 128
echo json_encode($categories,128);
JSON_PRETTY_PRINT
был представлен в PHP 5.4.0 .
Если вы хотите, чтобы ваш код читался в более ранних версиях PHP, используйте эти константы вместо их числовых значений. Обратите внимание, что я поместил версию каждый из них стал доступным – если вы используете опцию в более ранней версии PHP, не ожидайте ее работы.
<?php // json_encode() options define('JSON_HEX_TAG', 1); // Since PHP 5.3.0 define('JSON_HEX_AMP', 2); // Since PHP 5.3.0 define('JSON_HEX_APOS', 4); // Since PHP 5.3.0 define('JSON_HEX_QUOT', 8); // Since PHP 5.3.0 define('JSON_FORCE_OBJECT', 16); // Since PHP 5.3.0 define('JSON_NUMERIC_CHECK', 32); // Since PHP 5.3.3 define('JSON_UNESCAPED_SLASHES', 64); // Since PHP 5.4.0 define('JSON_PRETTY_PRINT', 128); // Since PHP 5.4.0 define('JSON_UNESCAPED_UNICODE', 256); // Since PHP 5.4.0 // json_decode() options define('JSON_OBJECT_AS_ARRAY', 1); // Since PHP 5.4.0 define('JSON_BIGINT_AS_STRING', 2); // Since PHP 5.4.0 define('JSON_PARSE_JAVASCRIPT', 4); // upgrade.php // json_last_error() error codes define('JSON_ERROR_NONE', 0); // Since PHP 5.3.0 define('JSON_ERROR_DEPTH', 1); // Since PHP 5.3.0 define('JSON_ERROR_STATE_MISMATCH', 2); // Since PHP 5.3.0 define('JSON_ERROR_CTRL_CHAR', 3); // Since PHP 5.3.0 define('JSON_ERROR_SYNTAX', 4); // Since PHP 5.3.0 define('JSON_ERROR_UTF8', 5); // Since PHP 5.3.3 define('JSON_ERROR_RECURSION', 6); // Since PHP 5.5.0 define('JSON_ERROR_INF_OR_NAN', 7); // Since PHP 5.5.0 define('JSON_ERROR_UNSUPPORTED_TYPE', 8); // Since PHP 5.5.0 ?>
Параметр JSON_PRETTY_PRINT
доступен только с PHP 5.4