0

可能重复:
json_decode 在 webservice 调用后返回 NULL


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

2 回答 2

2

您的 JSON 使用 JSONLint 进行验证。它可能是通过 url 传递的不需要的空格或字符。我认为如果您要添加干净的 JSON 字符串,则可能不会出现此问题。尝试添加json_last_error()afterjson_decode()以确定确切的问题。它应该是这样的:

        $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);
于 2012-09-21T05:08:51.853 回答
0

看看这个链接

PHP json_decode() 使用有效的 JSON 返回 NULL?

json_decode() 返回空问题

json_decode 在 webservice 调用后返回 NULL

我认为是因为UTF-8 BOM

if(get_magic_quotes_gpc()){
  $d = stripslashes($result);
}else{
  $d = $result;
}
$d = json_decode($d,true);

试试这种格式。

于 2012-09-21T04:57:31.633 回答