2013-07-28 185 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?所以如果你理解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

我的問題是,如何做一個循環來分組數據(while,for,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 - 這樣一個學生對象:

{ 
    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 

..the細節有關的第一個學生,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 

而與第一組中的第一個學生的名字:使用`json_encode()`右

groups[0].students[0].name