1
우리는 ZEND Framework로 API를 개발하고 있습니다. 여기에 내가 상상 예를 들어 응답
$this->getResponse()
->setHttpResponseCode(200)
->appendBody($this->_helper->json($client->toArray()));
입니다 $이 -> _ 헬퍼> JSON 문자열 만 반환됩니다 JSON의 (dev에 환경) 배열을 반환.
이제 스테이지 서버를 가지고 놀 수 있으며 매우 동일한 코드가 JSON 문자열을 반환합니다.
dev 환경은 현재 다른 PHP 버전입니다 (dev는 5.3.1, 준비는 5.3.3 임). 이것이 원인입니까? 이 다른 버전이 JSON을 다르게 인코딩합니까? 왜 이런 일이 일어나는 지 아십니까? 또한 당신의 중첩 된 기능을 파괴하는 것이 현명했을 것이다이 경우
아니는 JSON을 반환해야합니다. 다른 방법으로 그것을 배열로 되돌릴 수도 있습니다. $ this-> _ helper-> json ($ array)은 지금 Json을 반환하고, 액션을 완료하기를 기다리지 않습니다. PHP의 버전은이 문제와 관련이 없어야합니다. 5.3.8 또는 5.3.9로 업그레이드하는 것이 요청 개체를 악용하지 못하도록하는 좋은 방법입니다. – RockyFord
빠른 응답을 보내 주셔서 감사합니다. 그것은 매우 이상합니다. 출력을 터치하고 배열로 변환하는 다른 함수는 없습니다. 이전 주석을 수정하면서 JSON이 자동으로 디코딩 된 것처럼 객체 배열을 반환한다고 말해야합니다. 스테이징 서버에서는이 작업을 수행하지 않습니다. http://stackoverflow.com/questions/689185/json-decode-returns-null-php에 따라 문자 인코딩 문제가 원인 일 수 있습니까? – JoshH2
@RockFord는 문자열을 자동으로 json_decoding하는 함수가 있다는 점에서 정확합니다 (실수). 그러나 json_decode는 스테이징 서버에서 실패하므로 사실 디코딩에 실패하면 JSOn 문자열이 반환됩니다. 나는 stackoverflow.com/questions/689185/json-decode-returns-null-php에서 해결책을 사용하고있다. 그러나 이것을 피하기 위해 문자 인코딩을 보장하는 것이 또 하나있다. – JoshH2