Сортировка результатов при Response

Всё что касается построения API
Ответить
Аватара пользователя
vitovt
Сообщения: 210
Зарегистрирован: 2012.03.21, 10:37
Контактная информация:

Сортировка результатов при Response

Сообщение vitovt »

Подскажите пожалуйста в какую сторону смотреть и проблема ли это фреймворка.

Отдаю ответ в виде массив в контроллере, наследованном от rest\Controller

например так

Код: Выделить всё

	$response = [
	  0 => 'All',
	  1=>'Yes',
	  2=>'No'
	];
На выходе получаю JSON

Код: Выделить всё

{
 "All",
                    "Yes",
                    "No",
                   
                }
т.е без ключей, которые нужны.

Пробую определить так

Код: Выделить всё

	$response = [
	  -1 => 'All',
	  1=>'Yes',
	  2=>'No'
	];
Тогда на выходе

Код: Выделить всё

 {
                    "1": "Yes",
                    "2": "No",
                    "-1": "All"
                }
Как мне заставить контрлллер отдавать так как мне надо, с ключами и в том порядке, в котором я прописываю элементы массива, без сортировки или какого-то своего преобразования?

Аватара пользователя
vitovt
Сообщения: 210
Зарегистрирован: 2012.03.21, 10:37
Контактная информация:

Re: Сортировка результатов при Response

Сообщение vitovt »

Сам спросил, сам разобрался, проблема крылась в formatters и настройках, помогло так

Код: Выделить всё

'formatters' => [
                \yii\web\Response::FORMAT_JSON => [
                    'class' => 'yii\web\JsonResponseFormatter',
                    'prettyPrint' => YII_DEBUG,
                    'encodeOptions' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK | JSON_FORCE_OBJECT,
                ],
            ],
именно

JSON_FORCE_OBJECT


Но вот проблема сортировки осталсь - на выходе сортирует по ключу, а не так как отдается массив

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Сортировка результатов при Response

Сообщение andku83 »

посмотрите ответ от сервера в чистом виде, скорее всего сортирует js при создании объекта

Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Сортировка результатов при Response

Сообщение Nex-Otaku »

Тоже сталкивался с таким, если по ключу передаёшь в JSON, то порядок элементов произвольный. Выход - использовать массив (без ключей), а не объект (ассоциативный массив).

Ответить