9.3. JSON オブジェクト

PHP オブジェクトを JSON にエンコードすると、 オブジェクトの public プロパティがすべて JSON オブジェクトにエンコードされます。

JSON オブジェクトのデコードは、ちょっと大変です。Javascript のオブジェクトを PHP に対応させるなら、連想配列にするのが一番近いでしょう。 しかし、中には「クラスの ID を渡してそのインスタンスを作成し、 JSON オブジェクトの キー/値 をそのインスタンスに代入すべきだという人もいます。 また、そんなことをするとセキュリティ上問題があるという人もいるでしょう。

デフォルトでは、Zend_Json は JSON オブジェクトを連想配列にデコードします。しかし、 もしオブジェクトとして受け取りたいのなら、そのように指定することもできます。

<?php
// オブジェクトをオブジェクトにデコードします
$phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
?>

このようにしてデコードされたオブジェクトは StdClass オブジェクトとなり、JSON の キー/値 のペアに対応するプロパティを保持します。

Zend Framework の推奨する方法は、各開発者が JSON オブジェクトのデコード方法を決めるべきだというものです。 もし特定の型のオブジェクトを返してほしいのなら、 お望みの型のオブジェクトを開発者自身が作成したうえで、 Zend_Json がデコードした値をそこに代入していけばいいのです。