Как json_encode сложных структур данных в PHP? - PullRequest
2 голосов
/ 17 мая 2011

У меня есть структура данных, которая на верхнем уровне представляет собой словарь и содержит списки.Типичным примером может быть:

array('foo' => array(1, 2, 3),
      'bar' => array(4, 5, 6));

Словарь верхнего уровня может не иметь атрибутов, а внутренние списки могут быть пустыми.

Эти структуры должны быть в JSON-кодировке.Проблема в том, что PHP не делает различий между пустым словарем и пустым списком, поэтому он не знает, должен ли array () отображаться как '{}' или '[]'.Я могу вызвать '{}', выполнив

json_encode($object, JSON_FORCE_OBJECT);

, но это отобразит

array('foo' => array());

как '{"foo": {}}', когда должно быть '{"foo": []} '.Если я опущу JSON_FORCE_OBJECT, то

array();

будет отображаться как '[]', тогда как должно быть '{}'.Какое решение, кроме как бросить PHP и написать это на нормальном языке?

1 Ответ

2 голосов
/ 17 мая 2011

Перебирайте ваши данные и заменяйте все array (), которые должны быть объектами, на

$objectItem = new stdClass();

или сделать

$objectItem = (object)$objectItem;

В качестве альтернативы, вы можете просто использовать объекты с самого начала для этих элементов вместо массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...