2013-06-26 3 views
0

저는 PHP로 공개 API를 구축 중이며 json_decode()과 매우 이상한 문제가 있습니다. 나는 동적으로 형성되고 그 과정에서 많은 어려움을 겪고있는 JSON이라는 큰 문자열을 가져오고있다. 이 같은에서 JSON 객체를로드하려고 시도하고있다 :이 내가 아닌 나머지를 전달하는 $user_id 정수의 약 절반 작동하는지 발견하고json_decode가 예기치 않게 작동합니다.

$all_related_users_obj = json_decode($this->get_related_users_raw_JSON($user_id)); 
if(is_object($all_related_users_obj)) echo $all_related_users_obj->tags[0]->first_name; 
else echo "NOT AN OBJECT"; 

. 일반적으로 내 JSON은 단순히 형식이 잘못되었다고 가정하지만 JSONlint에 따르면 모든 JSON이 올바르게 구성되어 있습니다.

created a gist$all_related_users_obj에 올바르게로드되는 JSON 파일의 예와 그렇지 않은 JSON 파일의 예입니다.

json_last_error() 기능을 사용하여 Malformed UTF-8 characters, possibly incorrectly encoded이 포함되어 있음을 나타내는 JSON_ERROR_UTF8을 수신 중입니다. 그러나 나는 아직도 오류를 발견 할 수 없다.

귀하의 도움에 감사드립니다. 당신의 "작동하지 않는"예에서

+0

저는 ** 모든 JSON을 읽지 않았습니다. diff 도구를 통해 그들을 넣어. –

+0

@ IgnacioVazquez-Abrams는 요점 이외의 것을 사용하여 게시하는 것을 의미합니까? 나는 또한 http://jsonformatter.curiousconcept.com/을 시도했다. – Brannon

+0

https://www.google.com/search?q=json+diff –

답변

3

는 깊은 JSON에 묻혀 키 중 하나입니다

"city":"Rezé", 

이 비 ASCII 문자 é이 포함되어 있습니다. 아마 JSON이 UTF8이 아닌 인코딩 (아마도 ISO8859-1)으로 제출되어 json_decode() barf가 될 가능성이 있습니다.

+0

정말 고마워. 죄송합니다. 필자는 그것을 읽어야합니다. 필자는'$ input = iconv ('UTF-8', 'UTF-8 // IGNORE', utf8_encode ($ input))'를 사용하여 해결할 것입니다. – Brannon

+0

+1 찾기 26,655 자. 네가 의심하지는 않지만. 그래도 +1. –

+2

@PhpMyCoder : 예, 저는 그 환자가 아닙니다. vim에 붙여 넣어 인쇄 할 수없는 모든 ASCII 문자와 일치하는'[^ - ~]'을 검색했습니다. – duskwuff

관련 문제