PHP Json_Decode返回Null

时间:2012-09-21 04:49:44

标签: php json codeigniter

  

可能重复:
  json_decode returns NULL after webservice call


我正在开发一个面向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);
    }
}

2 个答案:

答案 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);

尝试这种格式。