我得到了以下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
元素?
答案 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"
}
]
}