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

Parsing JSON gives few separate elements put toghether as one

我关注 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个元素?

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

{  
   "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"
      }
   ]
}