在JSON中传递子对象

时间:2012-10-30 09:30:15

标签: php javascript jquery json

我正在尝试将JSON字符串传递给我的PHP脚本,但我不确定如何以考虑可能有0个或更多电话,电子邮件和传真的方式构建字符串。

以下是我的字符串的示例:

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

问题是我的脚本只给我最后一个电话号码,大概是因为JSON参数名称是相同的,所以我应该使用什么格式来实现我想要的?我想避免在参数名称的末尾加上增量数字,即“telnumber1”,“telnumber2”等。

3 个答案:

答案 0 :(得分: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
                )
        )
)

答案 1 :(得分:2)

听起来像telephones等。人。应该是对象的数组而不仅仅是一个对象。数组以[开头,以]结尾,例如:

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

必要时,数组可以为空:

"telephones": []

答案 2 :(得分:2)

将多个电话号码作为阵列传递:

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

您显然需要修改服务器端脚本以期望“电话”阵列。