2012-01-30 75 views
1

我们正在开发与Zend框架的API。下面是一个例子响应

$this->getResponse() 
->setHttpResponseCode(200) 
->appendBody($this->_helper->json($client->toArray())); 

我想象中的$这个 - > _ helper-> JSON将返回一个JSON字符串,但它返回一个数组(在开发环境)。

我现在已经升级服务器和非常相同的代码返回JSON字符串玩。

的开发环境是目前不同的PHP版本(dev为5.3.1,升级为5.3.3),这是什么原因?这些不同版本是否对JSON进行不同的编码?任何想法为什么发生这种情况?

+0

都能跟得上它应该返回JSON。是否有可能将其他方法放回到数组中。 $ this - > _ helper-> json($ array)现在返回Json,它不会等待完成操作。 Php的版本应该不会影响这个问题。虽然升级到5.3.8或5.3.9是防止请求对象利用的一个好主意。 – RockyFord 2012-01-30 14:42:18

+0

感谢您的快速响应。这很奇怪。没有其他函数触及输出并将其转换为数组。作为对我以前的评论的修改,我应该说它正在返回一个对象数组,就好像JSON已经被自动解码一样。它不会在登台服务器上执行此操作。难道是通过编码问题按http://stackoverflow.com/questions/689185/json-decode-returns-null-php字符引起的? – JoshH2 2012-01-30 14:56:12

+0

快速更新,@RockFord是正确的(我的错)的存在是被自动json_decoding字符串的函数。但是,json_decode在登台服务器上失败,看起来像是它向我返回了一个JSOn字符串,但事实上它无法对其进行解码。我使用的stackoverflow.com/questions/689185/json-decode-returns-null-php的解决方案,但有另一种是确保字符编码,以避免这种情况? – JoshH2 2012-01-30 15:40:45

回答

0

在这种情况下,它也明智地打破你的嵌套调用到单独的电话和各的var_dump结果验证内的内容正在按你的预期:

$response = $this->getResponse(); 
$setResponseReturn = $response->setHttpResponseCode(200); 
$clientArray = $client->toArray(); 
var_dump($response, $setResponseReturn, $clientArray);die; 

//->appendBody($this->_helper->json($client->toArray()));