json — parse.com вложенные объекты _encode () и декодирование в массив php не работают должным образом

У меня есть ParseObject с именем Follow, как объяснено в этом руководстве JS
https://parse.com/docs/js/guide#relations-using-join-tables

Хотя я делаю это на PHP. Цель состоит в том, чтобы после сохранения объекта Follow можно было получить представление массива php объекта с вложенными классами. от а также в свойства объекта Follow являются указателями на _User объект.

Этот блок кода создает объект follow, затем пытается преобразовать его в массив php с помощью json_decode, но только объект верхнего уровня корректно декодируется.

public function post_follow() {
try {

$user = $this->get_user(Input::post('objectId'));

$follow = new ParseObject("Follow");
$follow->set("from", $this->currentUser);
$follow->set("to", $user);
$follow->save();

$this->output = json_decode($follow->_encode(),true);
}
catch(ParseException $ex) {

return $this->error($ex);
}
}

где $ this-> output — это массив php, который позже превращается обратно в json через фреймворк.

Этот метод имеет выход

    {
"objectId": "6Gb1WflPfw",
"createdAt": {
"date": "2015-08-16 22:29:48.445000",
"timezone_type": 2,
"timezone": "Z"},
"updatedAt": {
"date": "2015-08-16 22:29:48.445000",
"timezone_type": 2,
"timezone": "Z"},
"from": "{\"objectId\":\"88D437QDxp\",\"createdAt\":{\"date\":\"2015-08-13 08:26:29.478000\",\"timezone_type\":2,\"timezone\":\"Z\"},\"updatedAt\":{\"date\":\"2015-08-16 20:09:17.048000\",\"timezone_type\":2,\"timezone\":\"Z\"},\"email\":\"[email protected]\",\"emailVerified\":true,\"followersCount\":1,\"followingCount\":2,\"friendsCount\":18,\"phone\":null,\"username\":\"brian\"}",
"to": "{\"objectId\":\"cmX8o9sEDh\",\"createdAt\":{\"date\":\"2015-08-13 08:29:54.735000\",\"timezone_type\":2,\"timezone\":\"Z\"},\"updatedAt\":{\"date\":\"2015-08-13 08:30:17.188000\",\"timezone_type\":2,\"timezone\":\"Z\"},\"email\":\"[email protected]\",\"emailVerified\":true,\"phone\":null,\"username\":\"brian2\"}"}

Как вы можете видеть, поля from и to являются просто строковыми литералами и не декодируются в массив php.

0

Решение

Попробуйте это, если это работает.

public function post_follow() {
try {

$user = $this->get_user(Input::post('objectId'));

$follow = new ParseObject("Follow");
$follow->set("from", $this->currentUser);
$follow->set("to", $user);
$follow->save();

$this->output = json_decode($follow->_encode()); // add true in the second parameter.  $this->output = json_decode($follow->_encode(), true);
}
catch(ParseException $ex) {

return $this->error($ex);
}

}

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]