PHP로 JSON에서 빈 객체를 만드는 가장 좋은 방법은 무엇입니까?
빈 JSON 객체를 만들려면 일반적으로 다음을 사용합니다.
json_encode((object) null);
개체에 null을 캐스팅하면 작동하지만 다른 바람직한 방법 및 / 또는이 솔루션에 문제가 있습니까?
솔루션이 작동 할 수 있습니다 ..
문서 (object) null
는 빈 객체 가 될 것이라고 명시하고 있으며, 일부는 코드가 유효하고 사용하는 방법이라고 말할 수 있습니다.
다른 유형의 값이 객체로 변환되면 stdClass 내장 클래스의 새 인스턴스가 생성됩니다. 값이 NULL이면 새 인스턴스가 비어 있습니다.
..하지만 안전하게 보관하세요!
위의 내용이 언제 / 변경 될지 알 수는 없지만 항상 {}
인코딩 된 데이터에서 끝날 것이라고 100 % 확신 하려면 다음과 같은 해킹을 사용할 수 있습니다.
json_encode (json_decode ("{}"));
지루하고 추악하지만 json_encode / json_decode가 둘 중 하나와 호환되며 항상 다음을 true로 평가할 것이라고 가정 / 희망합니다.
$a = <something>;
$a === json_decode (json_encode ($a));
권장 방법
json_decode ("{}")
stdClass
안전한 것으로 간주되면 아래를 사용하여 기본값 을 반환합니다 . 언급했듯이 (object) null
.
json_encode (new stdClass);
객체를 동적 사전으로 사용하는 경우 (그리고 그렇게 생각합니다) ArrayObject 를 사용하고 싶다고 생각합니다 .
비어있는 경우에도 JSON 사전에 매핑됩니다. 목록 (배열)과 사전 (연관 배열)을 구별해야하는 경우 유용합니다.
$complex = array('list' => array(), 'dict' => new ArrayObject());
print json_encode($complex); // -> {"list":[],"dict":{}}
또한 연관 배열을 사용하는 것처럼 원활하게 조작 할 수 있으며 사전에 올바르게 렌더링됩니다.
$complex['dict']['a'] = 123;
print json_encode($complex); // -> {"list":[],"dict":{"a":123}}
unset($complex['dict']['a']);
print json_encode($complex); // -> {"list":[],"dict":{}}
이것이 두 가지 방식 으로 100 % 호환되어야 하는 경우 , 객체 대신 json_decode
반환되도록 래핑 할 수도 있습니다 (결과 트리를 살펴보고 모든 객체를 재귀 적으로 교체해야하므로 매우 쉬운 작업입니다).ArrayObjects
stdClass
Gotchas . 하나의 I의 한 지금까지 발견 : is_array(new ArrayObject())
평가합니다에 false
. is_array
코드에서 발생 항목 을 찾아서 바꿔야 할 수도 있습니다 (사용 (($foo instanceof ArrayObject) || is_array($foo))
).
글쎄, json_encode()
단순히 PHP 배열 / 객체 / 등에서 문자열을 반환합니다. 다음을 수행하여 동일한 효과를 훨씬 더 효율적으로 얻을 수 있습니다.
$json = '{}';
이 작업을 수행하기 위해 함수를 사용하는 것은 의미가 없습니다.
업데이트 댓글 업데이트에 따라 다음을 시도 할 수 있습니다.
$test = json_encode(array('some_properties'=>new stdClass));
그게 당신이했던 것보다 더 나은지 모르겠지만.
PHP로 JSON에서 빈 개체를 만들려면
$json=json_decode('{}');
$json->status=202;
$json->message='Accepted';
print_r($json);
생산 한
stdClass Object
(
[status] => 202
[message] => Accepted
)
나중에해야 하니까요
if(is_object($json))
나는 항상 다음 (Object)[];
과 같이한다.
$json = (Object)[]; // [] could also be array()
... PHP에서 놀아 ...
$json = json_encode($json);
... 이제 실제 JSON입니다 ...
당신은 또한 사용할 수 있습니다
$var = ["key" => (object) array()];
json_encode($var);
참고 URL : https://stackoverflow.com/questions/8595627/best-way-to-create-an-empty-object-in-json-with-php
'your programing' 카테고리의 다른 글
Laravel에서 생성 한 URL에서“public / index.php”를 제거하려면 어떻게해야합니까? (0) | 2020.10.04 |
---|---|
이 RESTful 애플리케이션 예제에서 Spring @ResponseBody 주석은 어떻게 작동합니까? (0) | 2020.10.04 |
폴더에 대한 Windows 탐색기에 상황에 맞는 메뉴 항목을 추가하는 방법 (0) | 2020.10.04 |
redux-thunk와 redux-promise의 차이점은 무엇입니까? (0) | 2020.10.04 |
자바 스크립트로 iframe src 변경 (0) | 2020.10.04 |