>  기사  >  백엔드 개발  >  유효한 JSON에 대해 `json_decode()`가 NULL을 반환하는 이유는 무엇입니까?

유효한 JSON에 대해 `json_decode()`가 NULL을 반환하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-27 10:23:14405검색

Why Does `json_decode()` Return NULL for Valid JSON?

json_decode()가 유효한 JSON에 대해 NULL을 반환함: 문제 해결

json_decode()를 사용하여 JSON 데이터를 디코딩하려고 할 때 개발자는 다음과 같은 인스턴스가 발생할 수 있습니다. JSON이 유효한 것처럼 보임에도 불구하고 함수는 NULL을 반환합니다. 이 문제는 JSON이 온라인 JSON 유효성 검사기에 대한 유효성 검사를 통과할 때 특히 혼란스러울 수 있습니다. 이러한 문제가 발생하는 이유를 이해하고 효과적으로 해결하려면 문제와 해결 방법을 자세히 살펴보겠습니다.

JSON 문자열의 잘못된 문자

이 문제의 일반적인 원인 중 하나는 다음과 같습니다. JSON 문자열에 잘못된 문자가 있습니다. 대부분의 JSON 유효성 검사기는 이를 무시하지만, PHP의 json_decode() 함수는 이러한 문자를 발견할 때 갑자기 종료될 수 있습니다. 이러한 잘못된 문자의 범위는 일반적으로 0x00~0x1F 및 0x80~0xFF입니다.

해결책: 잘못된 문자 제거

이 문제를 해결하려면 preg_replace() 함수를 사용할 수 있습니다. JSON 문자열을 디코딩하기 전에 JSON 문자열에서 잘못된 문자를 모두 제거합니다. 다음 코드는 이를 수행하는 방법을 보여줍니다.

$json_string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string);

이 정규식은 0x00과 0x1F 사이의 모든 문자는 물론 0x80과 0xFF 사이의 문자도 제거하여 유효하지 않은 문자를 효과적으로 필터링합니다.

진정한 연관 배열

json_decode()가 NULL을 반환하게 만드는 또 다른 문제는 결과가 실제 연관 배열이길 기대하지만 PHP가 이를 객체로 해석하는 경우입니다. 이는 JSON 문자열에 큰따옴표로 묶이지 않은 속성 키가 포함된 경우 발생할 수 있습니다.

결과가 실제 연관 배열인지 확인하려면 json_decode()의 두 번째 매개 변수를 사용하고 이를 true로 설정하면 됩니다. . 이렇게 하면 결과가 객체가 아닌 연관 배열이 됩니다. 예는 다음과 같습니다.

$json_data = json_decode($json_string, true);

이러한 솔루션을 사용하면 유효한 것처럼 보이는 JSON 데이터에 대해 NULL을 반환하는 json_decode() 문제를 효과적으로 해결할 수 있으므로 PHP 애플리케이션에서 JSON 데이터를 성공적으로 구문 분석하고 활용할 수 있습니다. .

위 내용은 유효한 JSON에 대해 `json_decode()`가 NULL을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.