2010-07-19 25 views
74

Tôi đang cố gắng tạo một đối tượng JSON ra khỏi một mảng PHP. Mảng trông như thế này:Tạo đối tượng JSON theo cách chính xác

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

mã để mã hóa giao diện JSON như thế này:

$post_data = json_encode($post_data); 

các tệp JSON là vụ phải giống như thế này cuối cùng:

{ 
    "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 
    } 
} 

Làm cách nào tôi có thể đóng gói mã JSON được tạo trong "mục": {JSON CODE HERE}.

Trả lời

113

Thông thường, bạn sẽ làm điều gì đó như thế này:

$post_data = json_encode(array('item' => $post_data)); 

Nhưng, vì nó có vẻ như bạn muốn đầu ra được ở bên "{}", bạn thực hiện tốt hơn chắc chắn để buộc json_encode() để mã hóa như đối tượng, bằng cách thông qua hằng số JSON_FORCE_OBJECT.

$post_data = json_encode(array('item' => $post_data), JSON_FORCE_OBJECT); 

"{}" dấu ngoặc chỉ định một đối tượng và "[]" được sử dụng cho các mảng theo đặc điểm kỹ thuật JSON.

+0

tôi sẽ thêm 'JSON_FORCE_OBJECT' trong 'json_encode ($ arr, JSON_FORCE_OBJECT)' –

+0

Điều này có đúng không? $ post_data = json_encode (mảng ('item' => $ post_data), JSON_FORCE_OBJECT); – user339067

+1

Có ... nhưng bạn có thể kiểm tra và cho chúng tôi biết nếu nó hoạt động;) – Cristian

18

Bạn chỉ cần lớp khác trong mảng php của bạn:

$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

Chỉ cần những gì tôi cần, cảm ơn – Setrino

25

Mặc dù câu trả lời khác được đăng ở đây làm việc, tôi tìm thấy những phương pháp sau đây tự nhiên hơn:

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

echo json_encode($obj); 
Các vấn đề liên quan