2011-10-27 21 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'];