我正在开发一个面向REST服务的应用程序,在登录的位置,我发布用户名和密码,它返回以下的json
{"id":"4","username":"sam","redirect":"clients/home"}
之后当我尝试json_decode()时,它显示为NULL,你能告诉我是什么问题 我的服务器是PHP 5.2.12,它支持JSON_Decode。
function login()
{
$result=$this->rest->request("http://localhost/account/users/login","POST");
$qry['result']=json_decode($result);
var_dump($qry['result']);
foreach($qry as $result)
{
$this->session->set_userdata('id',$result->id);
$this->session->set_userdata('username',$result->username);
redirect($result->redirect);
}
}
答案 0 :(得分:2)
您的JSON使用JSONLint进行验证。它可能是通过URL传递的不需要的空格或字符。我想如果你要添加干净的JSON字符串,这个问题可能不会发生。尝试在json_decode()
之后添加json_last_error()
以确定确切的问题。它应该是这样的:
$qry['result']=json_decode($result);
switch(json_last_error())
{
case JSON_ERROR_DEPTH:
$error = ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_CTRL_CHAR:
$error = ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
$error = ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_NONE:
default:
$error = '';
}
if (!empty($error))
throw new Exception('JSON Error: '.$error);
答案 1 :(得分:0)
查看此链接
PHP json_decode() returns NULL with valid JSON?
json_decode() returns null issues
json_decode returns NULL after webservice call
我认为这是因为UTF-8 BOM
if(get_magic_quotes_gpc()){
$d = stripslashes($result);
}else{
$d = $result;
}
$d = json_decode($d,true);
尝试这种格式。