올바른 방법으로 JSON 개체 만들기


107

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}에 어떻게 캡슐화 할 수 있습니까?

답변:


161

일반적으로 다음과 같은 작업을 수행합니다.

$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 사양에 따라 배열에 사용됩니다.


나는를 추가 JSON_FORCE_OBJECTjson_encode($arr, JSON_FORCE_OBJECT)
아담 Lukaszczyk

이 올바른지? $ post_data = json_encode (array ( 'item'=> $ post_data), JSON_FORCE_OBJECT);
Mark Denn

1
아마도 이것은 누군가에게 도움이 될 것입니다- 이전 버전의 PHP 용 jsonwrapper boutell.com/scripts/jsonwrapper.html json_(en|de)code
robertbasic

어딘가에 배열이 중첩되어 있으면 어떻게 될까요 $post_data? 이것은 그들도 물건을 만들 것입니다, 맞습니까?
ProblemsOfSumit

echo json_encode (array ( 'item'=> $ post_data)); Object, Array, Object의 JSON 구조를 생성합니다. 또는 : {[{정확히 내가 찾던 것입니다. MySQL JSON 응답을 iOS 앱으로 가져옵니다. :-) Cristian 감사합니다 !!!
야곱 토핑

63

여기에 게시 된 다른 답변이 작동하지만 다음 접근 방식이 더 자연 스럽습니다.

$obj = (object) [
    'aString' => 'some string',
    'anArray' => [ 1, 2, 3 ]
];

echo json_encode($obj);

1
이 반응은 너무 좋습니다. 또한 객체가 인코딩 될시기를 정확하게 제어하지 않거나 객체 배열을 인코딩하려는 경우 : JSON_FORCE_OBJECT 응답이 작동하지 않습니다. 다른 쪽은 훨씬 더 읽기 쉽습니다. 감사!
Natxet

객체로 시작하여 배열을 포함하는 인코딩을 찾고 있다면 이것이 답입니다.
suchislife

31

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);

1
$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;

1

일반 객체를 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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.