PHP 어레이를 JSON으로 변환하는 것은 개발에서 발생하는 일반적인 작업이지만 프로세스 중에는 필연적으로 일부 문제가 발생합니다. 이 기사는 전환 문제를 신속하게 찾아서 해결하는 데 도움이되는 몇 가지 일반적인 오류 유형과 해당 디버깅 방법을 요약합니다.
원형 참조가 배열에 존재하면 json_encode () 호출은 종종 오류 프롬프트없이 실패합니다. 배열 요소가 서로를 참조하여 인코딩이 죽은 루프에 빠지기 때문입니다.
해결책은 원형 참조를 피하거나 json_encode ()를 호출하여 탈출 된 슬래시를 무시하려고 시도 할 때 json_unescaped_slashes 옵션을 추가하여 이런 종류의 문제를 완화시키는 것입니다.
$array = ['foo', ['bar' => $array]]; // 재활용 참조
$json = json_encode($array, JSON_UNESCAPED_SLASHES); // 解决재활용 참조问题
JSON은 문자열이 UTF-8 인코딩이어야합니다. 입력 배열의 문자 인코딩이 올바르지 않으면 생성 된 JSON이 차단 될 수 있습니다.
PHP 파일과 편집기 모두 UTF-8 인코딩을 사용하고 json_encode () 에서 JSON_UNESCAPED_UNICODE 옵션을 사용하거나 MB_CONVERTT_ENCODING () 함수를 사용하여 배열 요소를 UTF-8 인코딩으로 변환하는 것이 좋습니다.
JSON 형식은 엄격하게 필요하며 따옴표 나 쉼표가 부족하면 구문 분석이 실패합니다.
디버깅 중에 출력 JSON 문자열 형식을 신중하게 점검해야하며 온라인 JSON 검증 도구로 형식을 확인할 수 있습니다.
다음과 같이 배열이 있다고 가정합니다.
$array = [
'name' => 'John Doe',
'age' => 30,
'address' => [
'street' => 'Main Street',
'city' => 'Anytown'
]
];
JSON으로 변환하는 코드 :
$json = json_encode($array, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
echo $json; // 산출:{"name":"John Doe","age":30,"address":{"street":"Main Street","city":"Anytown"}}
위의 단계를 통해 일반적인 문제를 효과적으로 피할 수 있으며 JSON 데이터의 정확성과 무결성을 보장 할 수 있습니다.