2012-04-03 21 views
1

私はjsonの情報を使ってファイルを取得し、そのサイトにサイトを設定する最良の方法が何であるか疑問に思っていました。ファイルは次のようなものになります。JSONを使って作業する

window.test = 
{ 
    "header1": 
    [ 
     { "title": "title1", "author": "author1"}, 
     { "title": "title2", "author": "author2"}, 
     { "title": "title3", "author": "author3"} 
    ], 
    "header2": 
    [ 
     { "title": "title1", "author": "author1"}, 
     { "title": "title1", "author": "author2"}, 
     { "title": "title1", "author": "author3"} 
    ] 
}; 

次にコードをこのようにしますか?再び

$(function() { 
    $.getJSON('jsonFile.js',function(data){ 
     $.each(data, function(){ 
      console.log(header1.title); 
      console.log(header2.title); 
     }); 
    }); 
}); 

I JSONで初心者ですので、任意のチュートリアル、提案、よく私はここにコア概念を理解するのに役立つために何が役立つだろう。

+2

の上にそれぞれ()を実行します実行したコードを試しましたか? (最初から 'window.test ='を削除する必要があります)何かエラーが発生しましたか? (あなたはそうしますが、これを試して、あなたが遭遇する特定の困難を説明すると、あなたの質問はもっと簡単に答えることができます)。 –

+1

このように、jsファイルから 'window.test ='を削除します。 JSONコードは文字列として持つことができ、オブジェクトを作成するには 'eval()'だけです。私はまた、情報のこのpeicesが非常に便利であることを発見しました(より多くのASP.NETに焦点を当てましたが、JSONのアイデアはうまくいきました):http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/ – RemarkLima

+0

あなたがそれらを直接header1とheader2という名前にしているので、それぞれをやりたいとは思わない。彼らが単純なIDの場合は、それは理にかなっています。しかし、あなたは正しい方向にあります。 :) –

答えて

5

あなたのJSON:

{ 
    "header1": 
    [ 
     { "title": "title1", "author": "author1"}, 
     { "title": "title2", "author": "author2"}, 
     { "title": "title3", "author": "author3"} 
    ], 
    "header2": 
    [ 
     { "title": "title1", "author": "author1"}, 
     { "title": "title1", "author": "author2"}, 
     { "title": "title1", "author": "author3"} 
    ] 
} 

あなたのコード:

$(function() { 
    $.getJSON('jsonFile.js',function(data){ 

     console.log(data.header1[0].title); 
     console.log(data.header2[0].title);  
    }); 
}); 

必要に応じて、data.header1とdata.header2

+0

これはJQueryでJSONを解析する方法に関する私のすべての質問を解決しました –

0

他にも述べたように、window.textと末尾のセミコロンは削除する必要があります。そのようなファイルを直接読むと、テキストとしてエンコードされるので、そのファイルを反復処理する前にJSONに変換する必要があります。

var jsonData = JSON.parse(data));を使用すると、dataパラメータからJSONオブジェクトを取得できます。

0

あなたが持っているJSON構造については、以下のようなループが正しいはずです。

DEMO

$.each(test, function(key, val) { 
    console.log(key); //this will print the header 
    $.each(val, function(index, val1) { 
     console.log(val1.title + ' ' + val1.author); //this will print the header contents 
    }); 
});