Php json_encode()要求参数2为长字符串
我尝试使用以下代码从REST服务返回JSON:Php json_encode()要求参数2为长字符串,php,json,Php,Json,我尝试使用以下代码从REST服务返回JSON: $categories = $categoriesController->listAll(); if($categories){ header($_SERVER["SERVER_PROTOCOL"] . " 200 OK"); header("Content-Type: application/json"); echo json_encode($categories,JSON_PRETTY_PRINT); }else{ }
$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\u PRETTY\u PRINT选项仅在PHP 5.4版本中可用常量
JSON\u PRETTY\u PRINT
仅在PHP版本>=5.4时可用。
它的值是128,所以请尝试将JSON\u PRETTY\u PRINT
替换为128
echo json_encode($categories,128);
JSON\u PRETTY\u PRINT
于年推出
如果希望使代码在早期版本的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
?>
您的服务器运行哪个版本的PHP?至少升级到PHP5.4.0以使用JSON\u PRETTY\u PRINT
。(您可能希望启用通知,它会告诉您它不知道常数)@winterblood:我正在运行5.3.1,这就解释了问题。非常感谢:)