 <p>I think you need to use the constant <code>JSON_HEX_QUOT</code></p> <p>this seems to work:</p> <pre><code>$options = array(JSON_HEX_QUOT); $json = Zend_JSON($value, $cyclecheck, $options); </code></pre> <p>I got deeper into the Zend/Json.php code and it looks like if you'd like to use JSON_HEX_QUOT you're going to have to use the PHP function as Zend_Json doesn't pass the constant.</p> <pre><code> // Encoding if (function_exists('json_encode') &amp;&amp; self::$useBuiltinEncoderDecoder !== true) { $encodedResult = json_encode($valueToEncode); </code></pre> <p>I think this is because ZF is coded to the PHP 5.2.6 standard and $options was added to json_encode in PHP 5.3.0</p> <p>here is the reference from the php manual:</p> <blockquote> <p><strong>Example #2</strong> *A json_encode() example showing all the options in action*</p> <p><code>&lt;?php $a = array('&lt;foo&gt;',"'bar'",'"baz"','&amp;blong&amp;');</code></p> <p>echo "Normal: ", json_encode($a), "\n"; echo "Tags: ",<br> json_encode($a,JSON_HEX_TAG), "\n"; echo "Apos: ",<br> json_encode($a,JSON_HEX_APOS), "\n"; echo "Quot: ",<br> json_encode($a,JSON_HEX_QUOT), "\n"; echo "Amp: ",<br> json_encode($a,JSON_HEX_AMP), "\n"; echo "All: ",<br> json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP), "\n\n";</p> <p>$b = array();</p> <p>echo "Empty array output as array: ", json_encode($b), "\n"; echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";</p> <p>$c = array(array(1,2,3));</p> <p>echo "Non-associative array output as array: ", json_encode($c), "\n"; echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";</p> <p>$d = array('foo' => 'bar', 'baz' => 'long');</p> <p>echo "Associative array always output as object: ", json_encode($d), "\n"; echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";</p> </blockquote>