0

我正在尝试将 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”等。

4

3 回答 3

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
                )
        )
)
于 2012-10-30T09:31:21.090 回答
2

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

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

必要时数组可以为空:

"telephones": []
于 2012-10-30T09:31:25.830 回答
2

将多个电话号码作为数组传递:

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

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

于 2012-10-30T09:31:28.950 回答