json

php json_encode() Объект не конвертируется в json - получаю пустой объект, но работает если конвертировать в массив

Почему при отправке объекта в формате json, получаю пустой объект?
Если явно сменить тип переменной на array, данные передаются корректно:

foreach ($allMessages as $message) {
           $loadingMessages[] = (array) $message;
}
return new JsonResponse([
    'loadingMessages' => $loadingMessages,
]);

Решение

Проблема в том, что private свойства объекта не упаковываются в json.

yii2 JSON формат ответа -- пример кода (Controller action)

Один из способов ответить json-ом -- изменить перед инструкцией return действия контроллера формат ответа вызовом вроде:

\Yii::$app->response->format = Response::FORMAT_JSON;

После чего можно возвращать php-данные (объект или массив), которые будут автоматически сконвертированы в json/

Вот пример, где у нас уже есть json строка и просто хотим отдать её в ответ из действия контроллера (приходится перед отдачей переводить json данные в php-представление)

Subscribe to RSS - json