Запись объектов класса в файл json

168
20 ноября 2018, 17:10

Есть некоторый массив, содержащий объекты определенного класса $array. Вопрос, как закодировать этот массив в json формат, если json_encode($array) не работает (получается {[]} в результате)?

Answer 1

Для того, чтобы класс сериализировался в Json он должен реализовывать интерфейс JsonSerializable.

Если в Вашем массиве хранятся объекты определенного класса, думаю не составит труда реализовать этот интерфейс.

class Arr implements JsonSerializable {
public function jsonSerialize(){
        return [
            'a' => 'b'
        ];
    }
}
$arr = [];
$arr[] = new Arr();
$arr[] = new Arr();
$arr[] = new Arr();
$arr[] = new Arr();
print_r(json_encode($arr));

На выходе мы получим:

[{"a":"b"},{"a":"b"},{"a":"b"},{"a":"b"}]

READ ALSO
Как записывать русские буквы в json файл на php?

Как записывать русские буквы в json файл на php?

При вызове функции file_put_contents() в файле появляются кракозябры вида \u041a\u0438\u0440\ на месте русских буквНасколько понял, дело в кодировке

244
Нахождение всех перестановок массива

Нахождение всех перестановок массива

Есть массив элементов, и необходимо вычислить все возможные варианты упорядочения массива

194
YouCompleteMe не работает с заголовочными файлами

YouCompleteMe не работает с заголовочными файлами

Недавно решил установить YouCompleteMe и обнаружил, что, несмотря на то, что все прекрастно работает сcpp файлами, тем не менее автодополнение не работает...

306
С++ : Ошибка C2039

С++ : Ошибка C2039

name не является членом std::vector<man,std::allocator<_Ty>>Вроде решения находил, но в моем случае не спасло

177