2013-07-28 5 views
0

Может кто-нибудь объяснить мне, как сделать json, который содержит вложенный массив в массив?Вложенные массивы в JSON

Предполагая, что у меня есть две таблицы, первый «группа», а второй «студентов», и я хочу сделать это как JSON:

[ 
group: "X" 
{ 
    { 
     id: "1", 
     name: "Student z", 
    }, 
    { 
     id: "2", 
     name: "Student b", 
    } 
}, 
group: "N" 
{ 
    { 
     id: "3", 
     name: "Student c", 
    }, 
    { 
     id: "4", 
     name: "Student a", 
    } 
} ] 

Я всегда делал простой JSON, где это вообще не сгруппирован, но на этот раз он отличается.

Кроме того, группы являются динамическими, они не определены и могут меняться со временем.

Я знаю, что это глупый вопрос, но я хотел бы, чтобы кто-то помог мне, пожалуйста.

+0

просто комментарием, вы знаете, вы можете легко конвертировать PHP массив JSON с помощью 'json_encode()' правильно? Поэтому, если вы понимаете массивы PHP, вы можете просто сделать это на PHP и преобразовать в json. – Mike

+0

Да, я знаю и использовал. Но я смущен группировать массивы, что я имею в виду: как сделать цикл для группировки данных (while, for, foreach)? – SundayGirl

ответ

0

Я не уверен, что это вопрос, но такой объект, как это было бы так:

{ 
    X : [ 
    { 
     id: "1", 
     name: "Student z", 
    }, 
    { 
     id: "2", 
     name: "Student b", 
    } 
    ], N : [ 

    { 
     id: "3", 
     name: "Student c", 
    }, 
    { 
     id: "4", 
     name: "Student a", 
    } 
    ] 
} 

Это то, что вы хотели?

+0

Вопрос в том, как сделать цикл для группировки данных (в то время как для foreach)? Я: $ query = mysql_query ("select * from students"); \t $ i = 0; \t while ($ row = mysql_fetch_array ($ query)) \t { $ json [$ i] ['name'] = $ row ["studentName"]; $ i ++; } echo json_encode ($ json); С этим я делаю json. Но это просто простой json, и я не понимаю, как сделать вложенный json (например, ваш пример). Спасибо. – SundayGirl

2

Начнем со структурой объекта, где имя группы являются клавиши, как это:

{X: details-about-X, N: details-about-N} 

Для каждой группы, мы хотим, чтобы список студентов - поэтому каждая группа должна содержать массив:

{ 
    X: [item1, item2], 
    N: [item1, item2] 
} 

или написано иначе,

{ 
    X: [ 
     item1, 
     item2 
    ], 
    N: [ 
     item1, 
     item2 
    ] 
} 

И каждый элемент массива является студентом ш го имени и идентификатор - так студент объект:

{ 
    id: 1, 
    name: "Student z" 
} 

Подключив что в исходную структуру как элементы массива, мы получаем следующее:

{ 
    X: [ 
     { 
      id: 1, 
      name: "Student z" 
     }, 
     { 
      id: 2, 
      name: "Student b" 
     } 
    ], 
    N: [ 
     { 
      id: 3, 
      name: "Student c" 
     }, 
     { 
      id: 4, 
      name: "Student a" 
     } 
    ] 
} 

Если эта структура сохраняются в переменную JavaScript groups, вы сможете получить доступ к списку студентов в группе N, как:

groups.N 

..следующих подробности о первом студента в группе N, как:

groups.N[0] 

...и имя первого студента в группе N, как:

groups.N[0].name 

Альтернативой было бы начать с массива групп, и построить структуру что-то вроде этого:

groups = [ 
    { 
     group: 'X', 
     students: [list-of-students, same-as-above] 
    } 
    { 
     group: 'N', 
     students: [list-of-students, same-as-above] 
    } 
]; 

В этом случае, вы могли бы найти название вашей первой группы с:

groups[0].name 

И имя первого ученика в первой группе с:

groups[0].students[0].name 
Смежные вопросы