Как форматировать массив массивов в формате JSON?

#javascript #php #json

#javascript #php #json

Вопрос:

У меня есть базовый массив, подобный этому:

 [
    {
        "id": 4,
        "name": "Ray"
    },
    {
        "id": 5,
        "name": "Anthony"
    }
]
  

И мне нужно вернуть серию этих массивов как часть одного сообщения json. Кажется, я не могу понять это правильно в соответствии с: http://jsonlint.com /. Например, у меня есть группы людей. Каждая группа представляет собой массив людей, и каждая группа должна быть отдельным элементом родительского массива. Как это должно быть отформатировано?

Чтобы уточнить:

 group1: ray, anthony
group2: john, mike
group3: ed, dan
  

и так далее…

Комментарии:

1. Как выглядит ваша попытка форматирования?

2. У вас базовый массив на PHP или JavaScript? Вы группируете PHP-объект в массив?

3. PHP или JavaScript? Выберите один.

Ответ №1:

Просто сгруппируйте их по два, из PHP создайте структуру, затем, как обычно, используйте json_encode() . Пример:

 $groups = array(
    'group1' => array(
        array('id' => 4, 'name' => 'Ray'),
        array('id' => 5, 'name' => 'Anthony'),
    ),
    'group2' => array(
        array('id' => 6, 'name' => 'john'),
        array('id' => 7, 'name' => 'mike'),
    ),
    'group3' => array(
        array('id' => 8, 'name' => 'ed'),
        array('id' => 9, 'name' => 'dan'),
    ),
);

echo '<pre>';
print_r(json_encode($groups, JSON_PRETTY_PRINT));
  

Должно дать что-то вроде:

 {
    "group1": [
        {
            "id": 4,
            "name": "Ray"
        },
        {
            "id": 5,
            "name": "Anthony"
        }
    ],
    "group2": [
        {
            "id": 6,
            "name": "john"
        },
        {
            "id": 7,
            "name": "mike"
        }
    ],
    "group3": [
        {
            "id": 8,
            "name": "ed"
        },
        {
            "id": 9,
            "name": "dan"
        }
    ]
}
  

Ответ №2:

я думаю, это работает:

 {
    "g1": [
        {
            "id": 4,
            "name": "Ray"
        },
        {
            "id": 5,
            "name": "Anthony"
        }
    ],
    "g2": [
        {
            "id": 4,
            "name": "Mike"
        },
        {
            "id": 5,
            "name": "John"
        }
    ]
}
  

Ответ №3:

мне нравится этот способ:

 var  groups = [
"G1" : {
    "11" : {
        "id" : 11,
        "name" : "jhon"
    },
    "3" : {
        "id" : 3,
        "name" : "erik"
    }
},
"G2" : {
    "8" : {
        "id" : 8,
        "name" : "jean"
    },
    "4" : {
        "id" : 4,
        "name" : "jim"
    }
}
]
  

внутри любой группы ключом любого объекта является идентификатор (строковый формат) человека, для легкого доступа к его данным.

пример.

 group.G2[8]; // return jean object
  

Формат PHP:

 $g = array(
    'G1' => array(
        '11' => array('id' => 11, 'name' => 'jhon'),
        '3' =>array('id' => 3, 'name' => 'erik')
    ),
    'G2' => array(
        '8' => array('id' => 8, 'name' => 'jean'),
        '4' => array('id' => 4, 'name' => 'jim')
    )
);