2012-01-30 73 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()));