-1

私のJSONは次のようになります。

  {
  "statistics": [
    {
      "total_questions": 4152031,

      "views_per_day": 2198092.55,
      "api_version": {
        "version": "1.0",
        "revision": "2012.10.30.200"
      },
      "site": {
        "name": "Stack Overflow",
        "logo_url": "http://cdn.sstatic.net/stackoverflow/img/logo.png",
        "api_endpoint": "http://api.stackoverflow.com",
        "site_url": "http://stackoverflow.com",
        "description": "Q&A for professional and enthusiast programmers",
        "icon_url": "http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png",
        "aliases": [
          "http://www.stackoverflow.com"
        ],
        "state": "normal",
        "styling": {
          "link_color": "#0077CC",
          "tag_foreground_color": "#3E6D8E",
          "tag_background_color": "#E0EAF1"
        }
      }
    }
  ]
}

そして、Javascriptは次のとおりです。

$.getJSON('json1', function(data) {
    var items = [];

    $.each(data, function(key, val) {
        items.push('<li id="'+ statistics.data.key +'"> ' + statistics.data.val +'</li>')
    });

    $('<ul />', {
        'class':'ulLI',
        'html':items.join('')
    }).appendTo('body');
});

問題は、統計配列内のデータに正しくアクセスしておらず、次にサイトオブジェクトにアクセスしていないことです。これらのオブジェクト/配列内のデータにアクセスしてHTMLに追加する方法を教えてください。

4

2 に答える 2

3

あなたの$.getJSON('json1', function(data)

dataオブジェクト全体です

data.statisticsどちらが配列であるかをループする必要があります

$.each(data.statistics, function( index, item){
     /* here you access properties like "total_questions"*/
     var totalQ= item.total_questions;
})

編集: JSONdata.statisticsでは、配列に要素が 1 つしかありません。これが常に true の場合、eachループをスキップして JavaScript 表記を使用して配列の最初の要素を取得できます。

 var nestedData= data.statistics[0];
 var totalQ= nestedData.total_questions;

キーを知らずにすべてのプロパティをループしようとしている場合は、プロパティがオブジェクト、配列、または文字列であるかどうかを確認するためにかなり多くのコードが必要になり、オブジェクトまたは配列である場合は、同じチェックを行う子を再帰的にループし、それに応じて処理します。

また、ネストされたオブジェクトを html で出力する必要がある方法について、さらに詳細を提供する必要があります。

于 2012-12-16T07:52:03.583 に答える
0

サイトオブジェクト内のすべてを印刷したい場合、これは機能します

$.getJSON('your json file path', function(data) {
var items = [];
$.each(data.statistics[0].site, function(key, val) {
items.push('<li id="'+ key +'"> ' + JSON.stringify(val) +'</li>')

ファイルパスとして指定したものは正しくないようです。

于 2012-12-16T08:06:29.490 に答える