Синтаксический анализ JSON дает несколько отдельных элементов, объединенных одним

Я получаю следующий 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"}
}

Когда я это 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

Решение

Это допустимый синтаксис 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"}
]
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]