Zend_Json-Objects.xml 1.7 KB

1234567891011121314151617181920212223242526272829
  1. <sect1 id="zend.json.objects">
  2. <title>JSON 对象</title>
  3. <para>
  4. 当编码PHP对象为JSON时, 它的所有的公有属性将被编码为JSON格式(到JSON对象中).
  5. </para>
  6. <para>
  7. JSON 不允许 object references,所以注意不要带递归 references 解码对象( objects)。 如果递归有问题,<code>Zend_Json::encode()</code> 和 <code>Zend_Json_Encoder::encode()</code> 允许一个可选的第二个参数来检查递归;如果对象被系列化两次就抛出异常。
  8. </para>
  9. <para>
  10. 解码JSON对象貌似有一点轻微的难度, 因为Javascript对象与PHP的联合数组的结构更相近。 尽管如此, 一些人建议应该传入一个类的定义,然后类的实例应该由JSON的key/value对来被建造和组装; 另外有人这样做会引发一些安全问题。
  11. </para>
  12. <para>
  13. 默认情况下, <code>Zend_Json</code> 将解码JSON对象作为关联数组。但是如果你希望它返回一个对象, 以可以这样来指定:
  14. </para>
  15. <programlisting role="php"><![CDATA[
  16. // 解码 JSON 对象作为 PHP 对象
  17. $phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
  18. ]]>
  19. </programlisting>
  20. <para>
  21. 这样任何解码后的对象将被作为一个<code>StdClass</code>的对象来返回,对象带有根据JSON对象的key/value对生成的一系列属性。
  22. </para>
  23. <para>
  24. Zend Framework推荐每个开发者应该决定怎样来解码JSON对象。 如果一个特定类型的对象需要被构建,它可以由开发者的代码创建,然后用 <code>Zend_Json</code> 解码后的值来组装。
  25. </para>
  26. </sect1>
  27. <!--
  28. vim:se ts=4 sw=4 et:
  29. -->