2012-10-30 26 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} 
    ] 
} 

你显然需要修改你的服务器端脚本,以期望为“电话”使用一个数组。