2010-07-19 5 views
74

PHP 배열에서 JSON 객체를 만들려고합니다. 배열은 다음과 같습니다올바른 방법으로 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 모양을 인코딩 :

JSON 파일은 결국 다음과 같이하도록되어
$post_data = json_encode($post_data); 

:

{ 
    "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 코드를 "항목"에 캡슐화하려면 어떻게해야합니까? {JSON CODE HERE}.

답변

113

일반적으로, 당신은 같은 것을 할 것입니다 : 당신이 출력이 "{}"와 함께 할 것 같다 당신은 더 좋게 만드는,

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

+0

내가'JSON_FORCE_OBJECT'를 추가를 'json_encode ($ arr, JSON_FORCE_OBJECT)' –

+0

이 맞습니까? $ post_data = json_encode (array ('item'=> $ post_data), JSON_FORCE_OBJECT); – user339067

+1

예 ...하지만 테스트 해보고 효과가 있는지 알려줄 수 있습니다.) – Cristian

18

당신은 당신의 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); 
+0

그냥 필요한 것, 감사합니다. – Setrino

25

여기에 게시 다른 답변이 작동하지만, 내가 더 자연스러운 다음과 같은 방법 찾기 :

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

echo json_encode($obj); 
관련 문제