2011-10-27 17 views
0

私はJSONの初心者です。かなり基本的な質問があります....解析前の2つのJSONオブジェクトのJSON構造ですか?

ここは、PHPページからの応答であるJSONの例です。私の意図は、2つのJSONオブジェクト、Photos、およびCommentsを持つことです。残念ながら、JSONに欠陥があり、正しくフォーマットされていません。私は両方のオブジェクトを取得できるようにJSONをどのように構造化するのか分かりません。 JSONが2つのオブジェクトに合っていれば、このようになりますか?言い換えれば、私はこれらの2つの異なるオブジェクトであることを示すために写真とコメントの間で何が必要なのですか?:

{"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

私は正解が1つあるとは思わないが、これはうまくいくはずだ。

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

注意してください。 あなたの構造はほぼそこにあった。さて、あなたは変数responseにそれを解析されたと仮定すると、あなたはそうのような別の部品にアクセスできます。

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