9.3. Объекты JSON

Когда объекты PHP закодировываются в JSON, все публичные свойства этого объекта будут закодированы в объект JSON.

Декодирование объектов JSON является несколько более трудным делом, так как объекты Javascript более всего соответствуют ассоциативным массивам в PHP. Одни советуют передавать идентификатор класса, экземпляр этого класса должен быть создан и заполнен парами ключ/значение объекта JSON; другие считают, что это может представлять собой серьезную угрозу безопасности.

По умолчанию Zend_Json будет декодировать объекты JSON как ассоциативные массивы. Но если вы хотите получить объект, то можете указать это:

<?php
// Декодировать объект как объект
$phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
?>

Любые объекты, декодированные таким образом, возвращаются как объекты StdClass со свойствами, соответствующими парам ключ/значение в нотации JSON.

Рекомендацией Zend Framework является то, что разрабочик должен сам принимать решение, как декодировать объект JSON. Если должен быть создан объект определенного типа, он может быть создан в коде разработчика и заполнен значениями, декодированными с помощью Zend_Json.