Как преобразовать JSON в PHP-объект в Symfony2? - PullRequest
6 голосов
/ 09 сентября 2011

Через JQuery, я ajax / POST этот JSON

{"indices":[1,2,6]}:

к действию Symfony2.Прямо сейчас я по-настоящему забочусь о массиве, поэтому, если это значительно упростит задачу, я мог бы просто опубликовать также [1,2,6].

Как я могу преобразовать это в объект php?


Каким-то образом это не работает:

/**
 * @Route("/admin/page/applySortIndex", name="page_applysortindex")
 * @Method("post")
 * @Template()
 */
public function applySortIndexAction()
{
    $request = $this->getRequest();
    $j = json_decode($request->request->get('json'));
    $indices = $j->indices;
    return array('data'=> $indices);
}

дает

Примечание: при попытке получить свойство необъекта в .../PageController.php строка 64 (500 Внутренняя ошибка сервера)

, где я могу получить доступ к индексам $ j->, где $ j кажется нулевым


Плакат:

$.ajax({
      type: 'POST',
      url: "{{ path('page_applysortindex')}}",
      data: $.toJSON({indices: newOrder}),
      success: ...

1 Ответ

5 голосов
/ 09 сентября 2011

Чтобы получить данные, отправленные по телу, используйте:

$request = $this->getRequest();
$request->getContent();

проверить вывод и затем действовать. но это будет содержать JSON.

(да, проверил. Это приводит к вашему json)


получение POST-параметра с именем json из контроллера:

$request = $this->getRequest();
$request->request->get('json');

Request-объект


$j = json_decode('{"indices":[1,2,6]}');

var_dump($j);

ведет к:

object(stdClass)#1 (1) {
  ["indices"]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(6)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...