解析JSON提供了很少的单独元素

dep*_*cus 1 php json decode

我得到了以下JSON(我已在此处验证):

{
    "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"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我把它通过时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" 
    }
} 
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*ski 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"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)