2011-10-27 41 views
0

我是JSON的新手,我有一個相當基本的問題....解析前的兩個JSON對象的JSON結構?

以下是JSON的一個示例,它是PHP頁面的響應。我的意圖是有兩個JSON對象,照片和評論。不幸的是,我的JSON存在缺陷,而且格式不正確。我不知道如何構建JSON,以便我可以同時獲得這兩個對象。這應該是什麼樣子,如果JSON對於兩個對象是正確的?換句話說,我需要的照片和評論之間有什麼以表明這是兩個不同的對象?:

{"Photos": [ {"Filename": "5962230079803.jpg", "PhotoID": "39"}] "Comments": [ {"UserID": "100000660901552", "Comment": "Hello!"}]} 

回答

2

添加一個逗號每個元素之間:

{ 
    "Photos": [{"Filename": "5962230079803.jpg", "PhotoID": "39"}], 
    "Comments": [{"UserID": "100000660901552", "Comment": "Hello!"}] 
} 

如果要定義和解析這個JSON的結果,並將其存儲在變量obj,訪問屬性使用:

var obj = JSON.parse( response ); //response is the string containing JSON 
var photos = obj.Photos; //Array of photo objects 
var comments = obj.Comments;//Array of comment objects 
+0

呵呵。很簡單。我發誓我嘗試了這個,它工作。謝謝! – TaylorMac

+0

它會讓我接受 – TaylorMac

3

您沒有關閉您的陣列。試試這個:

{ 
    "Photos": [ 
     { 
      "Filename": "5962230079803.jpg", 
      "PhotoID": "39" 
     } 
    ], 
    "Comments": [ 
     { 
      "UserID": "100000660901552", 
      "Comment": "Hello!" 
     } 
    ] 
} 

使用JSONLint驗證您的JSON

+0

哦,在這裏,'Photos'和'Comments'是數組。刪除'[]'使它們成爲對象 –

+0

謝謝你的建議! – TaylorMac

+1

@BartVangeneugden你爲什麼要把一些看起來像一個完美的候選人的東西變成對象? – ZenMaster

2

我不認爲有一個正確的答案,但這應該沒問題:

{ 
    "Photos": [{ 
     "Filename": "5962230079803.jpg", 
     "PhotoID": "39"}], 
    "Comments": [{ 
     "UserID": "100000660901552", 
     "Comment": "Hello!"}] 
} 

請注意添加的逗號。 所以你的結構幾乎在那裏。現在,假設你解析它變成一個變量response,您可以訪問獨立的部分,像這樣:

response['Photos']; 
response['Comments'];