어레이가 php에서 비어 있으면 json_encode 함수가 중괄호 {}을(를) 반환하지 않음
이 코드가 있습니다.
$status = array(
"message"=>"error",
"club_id"=>$_club_id,
"status"=>"1",
"membership_info"=>array(),
);
echo json_encode($status);
이 함수는 json을 반환합니다.
{"message":"error","club_id":275,"status":"1","membership_info":[]}
하지만 난 이런 json이 필요해.
{"message":"error","club_id":275,"status":"1","membership_info":{}}
를 사용하다JSON_FORCE_OBJECT
의 선택사항json_encode
:
json_encode($status, JSON_FORCE_OBJECT);
JSON_FORCE_OBJECT(정수) 비관련 배열이 사용될 때 배열이 아닌 개체를 출력합니다.출력 수신자가 개체를 예상하고 있고 배열이 비어 있을 때 특히 유용합니다.PHP 5.3.0 이후 사용 가능.
또는 개체 내에 "다른" 어레이를 유지하려면 이전 답변을 사용하지 말고 다음과 같이 하십시오.
$status = array(
"message"=>"error",
"club_id"=>$_club_id,
"status"=>"1",
"membership_info"=> new stdClass()
);
$status = array(
"message"=>"error",
"club_id"=>$_club_id,
"status"=>"1",
"membership_info"=>(object) array(),
);
어레이를 물체에 던져넣음으로써json_encode
값은 항상 괄호 대신 중괄호를 사용합니다(빈 상태에서도).
사용할 수 없을 때 유용합니다.JSON_FORCE_OBJECT
값에 실제 개체를 사용할 수 없는 경우(또는 사용할 수 없는 경우)입니다.
배열과 "개체"(단어의 JSON 의미) 간에 PHP에는 차이가 없습니다.모든 어레이를 강제로 JSON 개체로 인코딩하려면JSON_FORCE_OBJECT
플래그는 PHP 5.3 이후 사용할 수 있습니다.http://php.net/json_encode 를 참조해 주세요.이는 모든 어레이에 적용됩니다.
또는 어레이 대신 실제로 PHP 코드의 개체를 사용할 수도 있습니다.
$data = new stdClass;
$data->foo = 'bar';
...
클라이언트 측에서 빈 어레이의 엣지 케이스를 처리하는 것이 더 간단할 수 있습니다.
오래된 질문인 것은 알지만 구글에서 처음 히트한 질문 중 하나이기 때문에 다른 해결책을 공유해야겠다고 생각했습니다.
PHP 7+에서는 표준 PHP 어레이를 사용하는 대신Map()
데이터 구조 확장의 일부로 사용합니다.문서.
Map 객체는 어레이와 실질적으로 동일한 성능을 가지며 일반 어레이로 액세스할 수 있도록 Array Access를 구현합니다.단, 표준 어레이와는 달리 이 어레이는 항상 어소시에이션이 되어, 기대대로 동작합니다.json_encode
오브젝트 키나 메모리 처리의 향상 등, 그 외의 작은 이점도 있습니다.
사용 예:
use Ds\Map;
$status = new Map([
"message"=>"error",
"club_id"=>$_club_id,
"status"=>"1",
"membership_info"=>array(),
]);
$map = new Map();
print json_encode($map); // {}
$map = new Map();
$map["foo"] = "bar";
print json_encode($map); // {"foo":"bar"}
print $map["foo"]; // bar
$map = new Map();
$map[1] = "foo";
$map[2] = "bar";
$map[3] = "baz";
print json_encode($map); // {"1":"foo","2":"bar","3":"baz"}
이것은 우아하다고는 할 수 없지만 간단한 문자열 치환으로 효과적으로 해결할 수 있습니다.
str_replace("[]", "{}", json_encode($data));
이것에 의해, 의 문제가 경감됩니다.JSON_FORCE_OBJECT
일반 배열을 개체로 변환합니다.
언급URL : https://stackoverflow.com/questions/28189390/json-encode-function-not-return-braces-when-array-is-empty-in-php
'programing' 카테고리의 다른 글
CORB(Cross-Origin Read Blocking) (0) | 2023.02.24 |
---|---|
환경 변수로 JSON 내보내기 (0) | 2023.02.24 |
봄에는 index.html의 모든 루트를 캐치합니다. (0) | 2023.02.24 |
Wordpress는 slug와 함께 분류법 이름을 가져옵니다. (0) | 2023.02.24 |
부정한 C# 식별자의 원인이 되는 JSON 문자열을 해석하려면 어떻게 해야 합니까? (0) | 2023.02.24 |