온라인 포맷터에서 유효한 JSON에도 불구하고 JSON_ERROR_SYNTAX
JSON이 외부 포맷터에서는 유효한 것처럼 보이지만 json_decode()에서 "SYNTAX ERROR" 응답이 발생함 당황스러울 수 있다. 포괄적인 솔루션은 다음과 같습니다.
숨겨진 문자 제거:
보이지 않는 문자는 구문 오류를 일으킬 수 있습니다. 다음 코드를 사용하여 이러한 문자를 제거합니다.
<code class="php">$json = file_get_contents('http://www.mywebservice'); // Remove unwanted characters for ($i = 0; $i <= 31; ++$i) { $json = str_replace(chr($i), "", $json); } $json = str_replace(chr(127), "", $json); // Handle BOM (Byte Order Mark) if (0 === strpos(bin2hex($json), 'efbbbf')) { $json = substr($json, 3); }</code>
정리된 JSON 디코딩:
이제 숨겨진 문자가 제거되었으므로 JSON을 디코딩합니다.
<code class="php">$obj = json_decode($json);</code>
오류 처리:
디코딩이 계속 실패하면 json_last_error()를 사용하여 특정 오류 코드를 확인하세요.
<code class="php">switch (json_last_error()) { case JSON_ERROR_NONE: echo 'JSON_ERROR_NONE'; break; case JSON_ERROR_DEPTH: echo 'JSON_ERROR_DEPTH'; break; // ... Other error codes default: echo 'Unknown Error'; break; }</code>
다음 단계를 따르면 JSON 구문 오류를 수정하고 JSON 데이터를 성공적으로 디코딩할 수 있습니다. PHP 5.5의 json_last_error_msg() 함수는 추가 오류 세부 정보를 제공하지만 숨겨진 문자 및 디코딩 문제를 해결한 후에는 필요하지 않을 수도 있습니다.
위 내용은 유효한 JSON 형식에도 불구하고 JSON_DECODE()에서 \'SYNTAX ERROR\'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!