Zend_Json-Objects.xml 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <sect1 id="zend.json.objects">
  2. <title>JSON Objekty</title>
  3. <para>
  4. Při převádění PHP objektů do JSON, budou veškere vlastnosti označené
  5. jako public převedeny do JSON objektu.
  6. </para>
  7. <para>
  8. JSON nedovoluje reference na objekt, takže je třeba dávat pozor a
  9. nepřevádět objekty s rekurzivními referencemi. Pokud máte problémy
  10. s rekurzemi, <code>Zend_Json::encode()</code> a
  11. <code>Zend_Json_Encoder::encode()</code> umožňují volitelný druhý
  12. parametr, zda se mají kontrolovat rekurze; pokud je objekt serializován
  13. dvakrát, bude vyhozena výjimka.
  14. </para>
  15. <para>
  16. Dekódování JSON objektů je komplikovanější, nicméně Javascriptové
  17. objekty jsou nejvíce podobné asociativním polím v PHP. Někteří lidé
  18. navrhují předávání identifikátoru třídy a naplnění instance objektu
  19. daty ve formátu klíč/hodnota z JSON objektu; jiní si myslí, že by to
  20. způsobilo značné bezpečnostní riziko.
  21. </para>
  22. <para>
  23. Defaultně, <code>Zend_Json</code> dekóduje JSON objekty jako asociativní
  24. pole. Nicméně, pokud vyžadujete vrácení objektu, můžete to určit takto:
  25. </para>
  26. <programlisting role="php"><![CDATA[<?php
  27. // Dekódovat JSON objekty jako PHP objekty
  28. $phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);]]>
  29. </programlisting>
  30. <para>
  31. Jakýkoliv objekt takto převedený je typu <code>StdClass</code>
  32. s vlastnostmi odpovídajícími dvojicím klíč/hodnota z JSON zápisu.
  33. </para>
  34. <para>
  35. Doporučení Zend Frameworku je, že každý vývojář by se měl rozhodnout
  36. jak dekódovat JSON objekty. Pokud je potřeba vytvořit objekt daného
  37. typu, tak může být vytvořen vlastním kódem a naplněn hodnotami
  38. získanými dekódováním pomocí <code>Zend_Json</code>.
  39. </para>
  40. </sect1>
  41. <!--
  42. vim:se ts=4 sw=4 et:
  43. -->