2010-07-19 23 views
74

Bir PHP dizisinden bir JSON nesnesi oluşturmaya çalışıyorum. Dizi şuna benzer:JSON nesnesini doğru şekilde oluştur

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

kodu şöyle JSON göz kodlamak için:

JSON dosyası sonunda şuna benzer gerekiyordu
$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 
    } 
} 

Oluşturulan JSON kodunu "item" bölümünde nasıl depolayabilirim: {JSON CODE HERE}.

cevap

113

Genellikle, böyle bir şey yapacağını: Eğer çıkış "{}" birlikte olmak istiyorum görünüyor gibi iyi yapmak,

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

Ama ileterek nesne olarak kodlamak için json_encode() zorlamak için emin JSON_FORCE_OBJECT sabitidir.

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

"{}" parantez bir nesne ve "[]" JSON şartnamesine uygun dizileri için kullanılan belirtir.

+0

i 'JSON_FORCE_OBJECT' eklersiniz json_encode içinde ($ arr, JSON_FORCE_OBJECT) ' –

+0

Bu doğru mu? $ post_data = json_encode (dizi ('öğe' => $ post_data), JSON_FORCE_OBJECT); – user339067

+1

Evet ... ama bunu test edebilir ve çalışıp çalışmadığını bize söyleyebilirsin;) – Cristian

18

Sadece kendi php dizideki başka bir katman gerekir:

$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

Sadece ihtiyacım olan şey, teşekkürler – Setrino

25

burada yayınlanan diğer cevaplar çalışmak rağmen, daha doğal şu ​​yaklaşımı bulmak:

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

echo json_encode($obj); 
İlgili konular