解析JSON将几个单独的元素组合在一起

时间:2015-01-12 14:10:40

标签: php json decode

我得到了以下JSON(我已经验证了here):

{
    "name": "Brian",
    "agentid": "12345",
    "username": "bob",
    "passcode": "bob01",
    "call": {
        "aa": "11",
        "bb": "22",
        "cc": "33",
        "dd": "44"
    },
    "call": {
        "aa": "111",
        "bb": "222",
        "cc": "333",
        "dd": "444"
    },
    "call": {
        "aa": "1111",
        "bb": "2222",
        "cc": "3333",
        "dd": "4444"
    },
    "call": {
        "aa": "11111",
        "bb": "22222",
        "cc": "33333",
        "dd": "44444"
    }
}

当我通过var_dump(json_decode($json, true));时,它给了我:

array(5) { 
    ["name"]=> string(5) "Brian" 
    ["agentid"]=> string(5) "12345" 
    ["username"]=> string(3) "bob" 
    ["passcode"]=> string(5) "bob01" 
    ["call"]=> array(4) {
        ["aa"]=> string(5) "11111" 
        ["bb"]=> string(5) "22222" 
        ["cc"]=> string(5) "33333" 
        ["dd"]=> string(5) "44444" 
    }
} 

看起来前三个call元素被覆盖。

如何解析此JSON并保留所有 call元素?

1 个答案:

答案 0 :(得分:5)

这是有效的JSON语法,但内容毫无意义。拥有更多同名的一个键是错误的。您应该制作单个call并将其转换为JSON 数组,您可以在其中存储所有对象:

{  
   "name":"Brian",
   "agentid":"12345",
   "username":"bob",
   "passcode":"bob01",
   "call":[  
      {  
         "aa":"11",
         "bb":"22",
         "cc":"33",
         "dd":"44"
      },
      {  
         "aa":"111",
         "bb":"222",
         "cc":"333",
         "dd":"444"
      },
      {  
         "aa":"1111",
         "bb":"2222",
         "cc":"3333",
         "dd":"4444"
      },
      {  
         "aa":"11111",
         "bb":"22222",
         "cc":"33333",
         "dd":"44444"
      }
   ]
}