索引嵌套JSON数组

rjjhvcjd  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(202)

我有以下JSON示例,其中"results"下的数组包含两个对象。它可以在"results"数组下包含数百个具有相同键和不同值的对象。
我没有权限更改此JSON文件。

{
  "results": [
    {
      "title": "Information Collection Requests; Direct Loan Servicing-Regular; and Servicing Minor Program Loans",
      "type": "Notice",
      "abstract": "In accordance with the Paperwork Reduction Act (PRA) requirement, the Farm Service Agency (FSA) is requesting comments from all interested individuals and organizations on a revision of two currently approved information collection requests, Direct Loan Servicing--Regular and Servicing Minor Program Loans, respectively. In the Direct Loan Servicing--Regular, the information is used to determine borrower compliance with loan agreements, assist the borrower in achieving business goals, and regular servicing of the loan account such as graduation, subordination, partial release, use of proceeds, and consent. In Servicing Minor Program Loans, the information collected is used to perform routine and special servicing actions for loans authorized and serviced under FSA's Minor Loan Program.",
      "document_number": "2023-05464",
      "html_url": "https://www.federalregister.gov/documents/2023/03/17/2023-05464/information-collection-requests-direct-loan-servicing-regular-and-servicing-minor-program-loans",
      "pdf_url": "https://www.govinfo.gov/content/pkg/FR-2023-03-17/pdf/2023-05464.pdf",
      "public_inspection_pdf_url": "https://public-inspection.federalregister.gov/2023-05464.pdf?1678970722",
      "publication_date": "2023-03-17",
      "agencies": [
        {
          "raw_name": "DEPARTMENT OF AGRICULTURE",
          "name": "Agriculture Department",
          "id": 12,
          "url": "https://www.federalregister.gov/agencies/agriculture-department",
          "json_url": "https://www.federalregister.gov/api/v1/agencies/12",
          "parent_id": null,
          "slug": "agriculture-department"
        },
        {
          "raw_name": "Farm Service Agency",
          "name": "Farm Service Agency",
          "id": 157,
          "url": "https://www.federalregister.gov/agencies/farm-service-agency",
          "json_url": "https://www.federalregister.gov/api/v1/agencies/157",
          "parent_id": 12,
          "slug": "farm-service-agency"
        }
      ],
      "excerpts": "In accordance with the Paperwork Reduction Act (PRA) requirement, the Farm Service Agency (FSA) is requesting comments from all interested individuals and organizations on a revision of two currently approved information collection requests, Direct..."
    },
    {
      "title": "Notice of Funding Opportunity for the Socially Disadvantaged Groups Grant for Fiscal Year 2023",
      "type": "Notice",
      "abstract": "This notice announces that the Rural Business-Cooperative Service (RBCS, Agency), a Rural Development (RD) agency of the United States Department of Agriculture (USDA), invites applications for grants under the Socially Disadvantaged Groups Grant (SDGG) program for Fiscal Year (FY) 2023. This notice is being issued to allow applicants sufficient time to leverage financing, prepare and submit their applications, and give the Agency time to process applications within FY 2023. A total of $3,000,000 in grant funding will be available for FY 2023. Successful applications will be selected by the Agency for funding and subsequently awarded to the extent that funding may ultimately be made available through appropriations. All applicants are responsible for any expenses incurred in developing and submitting their applications.",
      "document_number": "2023-05441",
      "html_url": "https://www.federalregister.gov/documents/2023/03/17/2023-05441/notice-of-funding-opportunity-for-the-socially-disadvantaged-groups-grant-for-fiscal-year-2023",
      "pdf_url": "https://www.govinfo.gov/content/pkg/FR-2023-03-17/pdf/2023-05441.pdf",
      "public_inspection_pdf_url": "https://public-inspection.federalregister.gov/2023-05441.pdf?1678970718",
      "publication_date": "2023-03-17",
      "agencies": [
        {
          "raw_name": "DEPARTMENT OF AGRICULTURE",
          "name": "Agriculture Department",
          "id": 12,
          "url": "https://www.federalregister.gov/agencies/agriculture-department",
          "json_url": "https://www.federalregister.gov/api/v1/agencies/12",
          "parent_id": null,
          "slug": "agriculture-department"
        },
        {
          "raw_name": "Rural Business-Cooperative Service",
          "name": "Rural Business-Cooperative Service",
          "id": 456,
          "url": "https://www.federalregister.gov/agencies/rural-business-cooperative-service",
          "json_url": "https://www.federalregister.gov/api/v1/agencies/456",
          "parent_id": 12,
          "slug": "rural-business-cooperative-service"
        }
      ],
      "excerpts": "This notice announces that the Rural Business-Cooperative Service (RBCS, Agency), a Rural Development (RD) agency of the United States Department of Agriculture (USDA), invites applications for grants under the Socially Disadvantaged Groups Grant..."
    }
  ]
}

我有以下代码来获取和显示数组中每个键所需的值,如下所示:

const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myArr = JSON.parse(this.responseText);

  let text = "";
  for (let i in myArr.results) {
    text += "<div class='fed-reg-container'><h2 class='title'>" + myArr.results[i].title + "</h2><p>" + myArr.results[i].type + "</p><p>" + myArr.results[i].agencies[0].raw_name + " Document # " + myArr.results[i].document_number + "</p><p>Posted on: " + myArr.results[i].publication_date + "</p><p>" + myArr.results[i].abstract + "</p><a class='fed-reg-button' href='" + myArr.results[i].html_url + "'>Read More</a></div>";
  }
  text += "";
  document.getElementById("demo").innerHTML = text;
};
xmlhttp.open(
  "GET",
  "https://www.federalregister.gov/api/v1/documents.json?conditions%5Bagencies%5D%5B%5D=agriculture-department&conditions%5Bagencies%5D%5B%5D=federal-highway-administration&conditions%5Bagencies%5D%5B%5D=fish-and-wildlife-service&conditions%5Bagencies%5D%5B%5D=forest-service&conditions%5Bagencies%5D%5B%5D=interior-department&conditions%5Bagencies%5D%5B%5D=international-boundary-and-water-commission-united-states-and-mexico&conditions%5Bagencies%5D%5B%5D=land-management-bureau&conditions%5Bagencies%5D%5B%5D=national-highway-traffic-safety-administration&conditions%5Bagencies%5D%5B%5D=national-park-service&conditions%5Bagencies%5D%5B%5D=reclamation-bureau&conditions%5Bagencies%5D%5B%5D=environmental-protection-agency&conditions%5Bagencies%5D%5B%5D=council-on-environmental-quality&conditions%5Bagencies%5D%5B%5D=safety-and-environmental-enforcement-bureau&conditions%5Bagencies%5D%5B%5D=environment-office-energy-department&conditions%5Bcomment_date%5D%5Bgte%5D=05%2F01%2F2023&conditions%5Bcomment_date%5D%5Blte%5D=01%2F01%2F2050&conditions%5Bterm%5D=arizona&conditions%5Btype%5D%5B%5D=RULE&conditions%5Btype%5D%5B%5D=PRORULE&conditions%5Btype%5D%5B%5D=NOTICE",
  true
);
xmlhttp.send();
.fed-reg-container {
  background-color: black;
  color: white;
  padding: 20px;
  margin: 20px 0;
}

.title {
  color: #fcb900;
}

.fed-reg-button {
  background-color: #fcb900;
  color: black;
  padding: 10px;
  display: block;
  max-width: 100px;
  text-align: center;
  font-weight: 600;
  text-decoration: none;
}
<!DOCTYPE html>
<html>

<body>
  <p id="demo"></p>

</body>

</html>

一切都很好,除了一件事。
正如你所看到的,我的json在"agencies"下有一个嵌套数组,里面有多个对象。
我尝试使用索引来获取每个对象的raw_name下的每个值。
如果我使用+ myArr.results[i].agencies[0].raw_name,它适用于单个对象。可能是[0][1]
当我试图抓取第二个值时,如+ myArr.results[i].agencies[0].raw_name + " - " + myArr.results[i].agencies[1].raw_name,它会破坏整个代码。我没有得到任何回报。只有一张白色。
知道我哪里做错了吗
谢谢!

jdzmm42g

jdzmm42g1#

使用嵌套循环处理所有代理。您可以使用map()循环遍历它们并返回一个名称数组,然后使用join()使用分隔符将它们连接起来。

for (let i in myArr.results) {
    let agencies = myArr.results[i].agencies.map(a => a.raw_name).join(', ');
    text += "<div class='fed-reg-container'><h2 class='title'>" + myArr.results[i].title + "</h2><p>" + myArr.results[i].type + "</p><p>" + agencies + " Document # " + myArr.results[i].document_number + "</p><p>Posted on: " + myArr.results[i].publication_date + "</p><p>" + myArr.results[i].abstract + "</p><a class='fed-reg-button' href='" + myArr.results[i].html_url + "'>Read More</a></div>";
  }

相关问题