2015-02-26 4 views
-1

Я послал объект JSON в PHP для запроса моей базы данных и возвращает результирующий набор, однако я получаю некоторое необычное поведение - мой объект JSON приходит в моем сценарии, как:json_decode разлагает мой объект JSON

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

Какого выглядит тоже хорошо мне для того, чтобы выполнять операции над этими данными я знаю, что нужно использовать json_decode так, что PHP принимает его как массив, однако, когда я выполняю json_decode($request) массив выхода:

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

Я никогда не имел это случается раньше и не может и др моя голова вокруг точно, почему это происходит

EDIT: Моя полная операция выглядит как:

if(isset($request)) { 

    var_dump($request); 

    $json = json_decode($request, true); 

    var_dump($json); 

} 

Первый свалка является правильным, когда декодируется я получаю перекос OUTPUT

EDIT: I я отправляю объект JSON из Angular, но я не думаю, что это должно вызвать какие-либо проблемы, однако это единственное, что я сделал по-другому, чем то, что у меня было в предыдущих приложениях:

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) { 
       ... 
     }); 
    } 

EDIT Я не совсем понимаю, почему, но с использованием print_f или var_dump поставлял искаженные результаты, однако, если я просто сделал:

$json = json_decode($request); 

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

echo $name; 
echo $dob; 

возвращает результаты, которые я бы ожидать.

+1

Handy tool: http://jsonlint.com/ – AbraCadaver

+2

Это объект Javascript, а не JSON. – OIS

+0

Прочтите [документацию] (http://json.org/). Ключи должны быть «строковыми». –

ответ

2

Я считаю, что вам может понадобиться в кавычки ключи:

{ "имя пользователя": "Бобби", "д.р.": "2015-02-12T00: 00: 00.000Z"}

Give что попробуйте.

+0

Я тоже думал, что все равно получаю одинаковые результаты :( – Alex

+0

смешно, работал для меня: –

+0

$ str = '{"username": "Bobby", "dob": "2015-02-12T00: 00: 00.000 Z "} '; print_r (json_decode ($ str)); Выходы: stdClass Object ([имя_пользователя] => Bobby [dob] => 2015-02-12T00: 00: 00.000Z) –

0

Это объект JavaScript. Попытка:

var json = { "name" : userName, "dob" : userDob }; 
JSON.stringify(json); 
Смежные вопросы