Как загрузить каждый раздел файла JSON, в котором есть объекты объектов?

0

Мой JSON файл выглядит следующим образом:

[{ "articles": [
    { "1": { "sections":
            [ {"1": "Lots of stuff here."} ]
        }
    },
    { "2": { "sections":
            [ {"1": "And some more text right here"} ]
        }
    }
}]

Основная предпосылка заключается в том, что он имеет один элемент в общем массиве, называемый "articles", который равен массиву "sections".

Другими словами, это конституция, поэтому она выглядит так:

Статья X

-Section A

-Section B

-Section C

Статья Z

...

Я хочу, чтобы вытащить каждую статью и загрузить ее в

<div class="alert text-black" id="article">
  <p class="lead" id="articleHeader"><strong>Article 1</strong></p>
  <dl>
    <dt id="article_section">Section 1</dt>
    <dd id="article_sectionINFO">this stuff belongs to section 1</dd>
  </dl>
</div>

и это сценарий, который у меня есть до сих пор:

var loadEvents = function(d){
$.each(d, function(i){
  var articleN = i;
  var articleID = "article" + i;
  var articleHeaderID = "articleHeader" + i;
  var articleHeader = "<p class='lead' id='articleHeader'><strong>Article " + i + "</strong></p>";
  var mySections = new Array();
  $.each(d, function(i){
    var sectionN = i;
    var sectionID = "article" + articleN + "section" + sectionN;
    var sectionINFO = sectionID + "INFO";
    mySections[k] =
    "<dt id='" + sectionID +"'> Section " + sectionN + "</dt>" +
    "<dd id='" + sectionINFO +"'>" + d[sectionN].
  })
  $("#eventHolder").append(new_block(articleID, articleHeaderID, articleHeader)); //to call the new element
})}

$.getJSON('data/constitution.json', loadConstitution);

В основном, я просто хочу, чтобы иметь возможность воспроизводить большую ячейку (как показано в коде <html> выше) для каждой статьи, со списком (<dl></dl>) для каждого раздела. Как правильно получить данные из файла JSON?

  • 1
    как можно ответить на неполный вопрос?
  • 0
    @starskythehutch Я думаю, что некоторые люди просто заглядывают, видят там код и пишут: «Да! Это хорошо!» :(
Показать ещё 1 комментарий

1 ответ

4
Лучший ответ

Поскольку у вас есть массив, содержащий объект, который содержит свойство article которое представляет собой массив, содержащий статьи, вам нужно перейти к этому свойству, чтобы перебрать их. Используйте два свойства в функции обратного вызова, чтобы вы могли получить доступ к объекту статьи:

$.each(d[0].articles, function(i, article) {

Поскольку каждый элемент является объектом, который содержит свойство sections которое представляет собой массив, содержащий разделы, вам нужно перейти к этому свойству в каждом элементе. Используйте другую индексную переменную для разделов, чтобы вы все еще могли получить доступ к переменной i используемой для индекса статьи:

var mySections = article.sections;
$.each(mySections, function(j, section) {

Внутри этого цикла j - это индекс раздела, section - это строка раздела, а i - это затем индекс статьи.

Это должно привести вас к правильному пути с циклом, остальное в основном просто использует правую переменную для каждого значения.

  • 0
    Не могли бы вы привести пример того, как я могу получить доступ к данным раздела? Это d[j] или mySections[j] ?
  • 0
    @Luxelin: Вы могли бы получить к нему доступ, используя mySections[j] или просто section .
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню