json_encode PHP 어레이를 JSON 개체가 아닌 JSON 어레이로 코드합니다.
PHP에는 다음과 같은 어레이가 있습니다.
Array
(
[0] => Array
(
[id] => 0
[name] => name1
[short_name] => n1
)
[2] => Array
(
[id] => 2
[name] => name2
[short_name] => n2
)
)
JSON을 JSON 배열로 인코딩하여 다음과 같은 문자열을 생성합니다.
[
{
"id":0,
"name":"name1",
"short_name":"n1"
},
{
"id":2,
"name":"name2",
"short_name":"n2"
}
]
그러나 이 어레이를 호출하면 다음과 같은 메시지가 나타납니다.
{
"0":{
"id":0,
"name":"name1",
"short_name":"n1"
},
"2":{
"id":2,
"name":"name2",
"short_name":"n2"
}
}
배열이 아닌 객체입니다.
어떻게 하면 얻을 수 있나요?json_encode
내 어레이를 어레이로 인코딩하는 대신?
RFC 8259 JavaScript Object Notation(JSON; JavaScript 객체 표기법) 데이터 교환 포맷의 어레이를 참조해 주세요.
배열 구조는 0 이상의 값(또는 요소)을 둘러싼 대괄호로 표시됩니다.요소는 쉼표로 구분됩니다.
array = begin-array [value *(value-array value)]end-array
어레이가 순차적이지 않기 때문에 이 동작이 관찰되고 있습니다.0
그리고.2
, 단,1
열쇠로서
숫자 색인만으로는 충분하지 않습니다. json_encode
PHP 어레이가 시퀀셜일 경우에만 PHP 어레이를 JSON 어레이로 인코딩합니다.즉, 키가 0, 1, 2, 3, ...인 경우입니다.
함수를 사용하여 어레이를 순차적으로 다시 인덱싱하여 원하는 동작을 가져올 수 있습니다.예를 들어, 아래 코드는 사용 사례에서 정상적으로 작동합니다.
echo json_encode(array_values($input)).
Array
에JSON
인덱스 배열만 있으므로 가져오려는 구조는 유효한 Json/Javascript가 아닙니다.
PHP Associates 배열은 JSON의 개체이므로 인덱스가 필요하지 않은 한 이러한 변환을 수행할 수 없습니다.
이러한 구조를 가져오려면 다음을 수행할 수 있습니다.
$indexedOnly = array();
foreach ($associative as $row) {
$indexedOnly[] = array_values($row);
}
json_encode($indexedOnly);
Will은 다음과 같은 것을 반환합니다.
[
[0, "name1", "n1"],
[1, "name2", "n2"],
]
json_twhonondata, true);
true를 지정하면 모든 속성이 배열로 바뀝니다(시퀀셜 여부).
이거 드셔보세요.
<?php
$arr1=array('result1'=>'abcd','result2'=>'efg');
$arr2=array('result1'=>'hijk','result2'=>'lmn');
$arr3=array($arr1,$arr2);
print (json_encode($arr3));
?>
언급URL : https://stackoverflow.com/questions/11195692/json-encode-php-array-as-json-array-not-json-object
'source' 카테고리의 다른 글
MySQL 데이터 원본이 Visual Studio에 나타나지 않음 (0) | 2022.10.19 |
---|---|
각도 2를 사용하여 인도 형식으로 숫자 표시 (0) | 2022.10.19 |
PHP 변수는 값으로 전달됩니까, 참조로 전달됩니까? (0) | 2022.10.19 |
404의 URL을 PHP로 테스트하는 쉬운 방법? (0) | 2022.10.19 |
Gson이 "<"와 ">"를 Unicode 이스케이프 시퀀스로 변환하는 것을 피할 수 있습니까? (0) | 2022.10.19 |