희소 배열의 JSON 인코딩 이해
JSON 인코딩에서 희소 배열(인덱스 값이 누락된 배열)은 예외입니다. 이는 JSON의 배열 구문이 인덱스를 지원하지 않아 이러한 배열을 직접적으로 표현하는 것이 불가능하기 때문입니다.
질문:
json_encode가 희소 배열을 JSON으로 인코딩하는 이유는 무엇입니까? 대신에 객체 배열?
답변:
희소 배열을 사용하는 json_encode의 동작은 JSON이 그러한 배열을 표현할 수 없기 때문에 발생합니다. json_encode가 희소 배열을 발견하면 이를 JSON 객체로 인코딩하여 배열의 키-값 쌍을 유지합니다.
예:
PHP를 고려하세요. 코드:
$a = array( new stdclass, new stdclass, new stdclass ); $a[0]->abc = '123'; $a[1]->jkl = '234'; $a[2]->nmo = '567'; echo json_encode($a) . "\n"; unset($a[1]); echo json_encode($a) . "\n";
출력:
[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}] {"0":{"abc":"123"},"2":{"nmo":"567"}}
설명:
해결책:
희소 배열을 객체로 인코딩하는 것을 방지하려면 다음을 사용할 수 있습니다. array_values($a)는 구멍이 없는 재인덱싱된 배열을 얻습니다. 그러면 json_encode가 이를 JSON 배열로 올바르게 인코딩합니다.
위 내용은 `json_encode`가 희소 배열을 JSON 객체로 변환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!