[php] 올바른 방법으로 JSON 개체 만들기
PHP 배열에서 JSON 개체를 만들려고합니다. 배열은 다음과 같습니다.
$post_data = array('item_type_id' => $item_type,
'string_key' => $string_key,
'string_value' => $string_value,
'string_extra' => $string_extra,
'is_public' => $public,
'is_public_for_contacts' => $public_contacts);
JSON을 인코딩하는 코드는 다음과 같습니다.
$post_data = json_encode($post_data);
JSON 파일은 결국 다음과 같이 표시됩니다.
{
"item": {
"is_public_for_contacts": false,
"string_extra": "100000583627394",
"string_value": "value",
"string_key": "key",
"is_public": true,
"item_type_id": 4,
"numeric_extra": 0
}
}
생성 된 JSON 코드를 “item”: {JSON CODE HERE}에 어떻게 캡슐화 할 수 있습니까?
답변
일반적으로 다음과 같은 작업을 수행합니다.
$post_data = json_encode(array('item' => $post_data));
그러나 출력이 ” {}
” 로 표시되기를 원하는 것처럼 보이기 json_encode()
때문에 JSON_FORCE_OBJECT
상수 를 전달하여 객체 로 강제 인코딩하도록하는 것이 좋습니다 .
$post_data = json_encode(array('item' => $post_data), JSON_FORCE_OBJECT);
” {}
“대괄호는 객체를 지정하고 ” []
“는 JSON 사양에 따라 배열에 사용됩니다.
답변
여기에 게시 된 다른 답변이 작동하지만 다음 접근 방식이 더 자연 스럽습니다.
$obj = (object) [
'aString' => 'some string',
'anArray' => [ 1, 2, 3 ]
];
echo json_encode($obj);
답변
PHP 배열에 다른 레이어가 필요합니다.
$post_data = array(
'item' => array(
'item_type_id' => $item_type,
'string_key' => $string_key,
'string_value' => $string_value,
'string_extra' => $string_extra,
'is_public' => $public,
'is_public_for_contacts' => $public_contacts
)
);
echo json_encode($post_data);
답변
$post_data = [
"item" => [
'item_type_id' => $item_type,
'string_key' => $string_key,
'string_value' => $string_value,
'string_extra' => $string_extra,
'is_public' => $public,
'is_public_for_contacts' => $public_contacts
]
];
$post_data = json_encode(post_data);
$post_data = json_decode(post_data);
return $post_data;
답변
일반 객체를 json으로 인코딩 할 수 있습니다.
$post_data = new stdClass();
$post_data->item = new stdClass();
$post_data->item->item_type_id = $item_type;
$post_data->item->string_key = $string_key;
$post_data->item->string_value = $string_value;
$post_data->item->string_extra = $string_extra;
$post_data->item->is_public = $public;
$post_data->item->is_public_for_contacts = $public_contacts;
echo json_encode($post_data);