json_decode破坏了我的JSON对象

时间:2015-02-26 21:38:46

标签: php

我已经向PHP发送了一个JSON对象来查询我的数据库并返回结果集,但是我得到了一些不寻常的行为 - 我的JSON对象在我的脚本中到达:

{ "username": "Bobby", "dob": "2015-02-12T00:00:00.000Z" }

我看起来也很好,为了对该数据执行操作我知道我需要使用json_decode以便PHP将其作为数组接收,但是当我执行json_decode($request)时输出数组是:

{ undefined: 24, Bobby: ["dob"]}

我以前从来没有遇到这种情况,并且无法完全了解为什么会发生这种情况

编辑:我的完整操作如下:

if(isset($request)) {

   var_dump($request);

   $json = json_decode($request, true);

   var_dump($json);

}

第一次转储是正确的,一旦解码,我得到了偏斜的输出

编辑:我正在从Angular发送JSON对象,但我认为这不应该导致任何问题,但是我唯一能做的就是以前在应用程序中所做的不同:

if (!(userName === undefined) && !(userDob === undefined))
    {
        var json = { "name" : userName, "dob"  : userDob };

        // Create POST request to the file in the url, send it to PHP in JSON format
        var callback = $http.post($scope.url, json );

        callback.success(function(data, status) {
                ...
        });
    }

编辑我不太明白为什么,但是使用print_fvar_dump会导致结果偏差,但如果我只是这样做了:

$json = json_decode($request);

$name = $json->name;
$dob  = $json->dob;

echo $name;
echo $dob;

它返回我期望的结果。

2 个答案:

答案 0 :(得分:2)

我相信你可能需要在键周围引用:

{"用户名":" Bobby"," dob":" 2015-02-12T00:00:00.000Z" }

试一试。

答案 1 :(得分:0)

这是一个JavaScript对象。尝试:

var json = { "name" : userName, "dob"  : userDob };
JSON.stringify(json);