2012-10-30 49 views
0

我正在嘗試將JSON字符串傳遞給我的PHP腳本,但我不確定如何構建字符串的方式會考慮可能有0個或更多的電話,電子郵件和傳真。在JSON中傳遞子對象

這裏是什麼我的字符串看起來像一個例子:

{"mode": "ADD_CONTACT", "id": 316, "firstname": "", "lastname": "", "telephones": {"teltype": 1, "telnumber": "234523453245", "isprimary": 0, "teltype": 4, "telnumber": "657567567567", "isprimary": 0}} 

的問題是,我的劇本只給我最後一個電話號碼,大概是因爲JSON參數名稱是一樣的,所以什麼格式應我用來實現我想要的?我想,以避免對參數名的粘底增量數,即「telnumber1」,「telnumber2」等

回答

4

使用的陣列(其可以是空的):

{..., "telephones": [{"teltype": 1, "telnumber": "234523453245", ...}, {...}]} 

實施例:

$json = 
    '{"telephones": [' . 
    '{"teltype": 1, "telnumber": "222222222222"}, ' . 
    '{"teltype": 1, "telnumber": "111111111111"}' . 
    ']}'; 
print_r(json_decode($json, true)); 
Array 
(
    [telephones] => Array 
     (
      [0] => Array 
       (
        [teltype] => 1 
        [telnumber] => 222222222222 
       ) 
      [1] => Array 
       (
        [teltype] => 1 
        [telnumber] => 111111111111 
       ) 
     ) 
) 
2

這聽起來像telephones等。人。應該是對象數組而不是單個對象。一個陣列[開始,以]結束,如:

"telephones": [ 
    {"teltype": 1, "telnumber": "234523453245", "isprimary": 0}, 
    {"teltype": 4, "telnumber": "657567567567", "isprimary": 0} 
], 

數組可以是空的,必要時:

"telephones": [] 
2

通過了多個電話號碼作爲數組:

{ 
    "mode": "ADD_CONTACT", "id": 316, "firstname": "", "lastname": "", 
    "telephones": 
    [ 
     {"teltype": 1, "telnumber": "234523453245", "isprimary": 0}, 
     {"teltype": 4, "telnumber": "657567567567", "isprimary": 0} 
    ] 
} 

你顯然需要修改你的服務器端腳本,以期望爲「電話」使用一個數組。