【问题标题】:How to loop though json data and get specific key value如何遍历json数据并获取特定的key值
【发布时间】:2020-06-24 23:58:51
【问题描述】:

这是数据

{
  "items": [
    {
      "sys": { "id": " 01/03/1997" },
      "fields": {
        "title": "First title",
        "p": "paragraph 1.",
        "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
      }
    },
    {
        "sys": { "id": "2 01/03/1997" },
        "fields": {
          "title": "First Blog Post",
          "p": "paragraph 2",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      },
      {
        "sys": { "id": "3 01/03/1997" },
        "fields": {
          "title": "First Blog Post 1",
          "p": "paragraph 3",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      },
      {
        "sys": { "id": "4 01/03/1997" },
        "fields": {
          "title": "First Blog Post 2",
          "p": "paragraph 4",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      },
      {
        "sys": { "id": "8 01/03/1997" },
        "fields": {
          "title": "First Blog Post 3",
          "p": "paragraph",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      }
  ]
}

我正在尝试在服务器端循环这些数据并获取特定的键值。

for (var i = 0; i < jsonObj.items.length; i++) {
  var currentObject = jsonObj.items[i].fields
  for(var title in currentObject){
          if(currentObject.hasOwnProperty(title)) {
            // console.log(title + ': ' + currentObject[title]);
            // console.log(currentObject[i]);
              // console.log(`${title}`);
              // var pageTitle = currentObject[title];
              // console.log(pageTitle); 
              var pageTitle = currentObject[title];
              console.log(currentObject[title]); 
          }
     }
     console.log(currentObject[title]);
}

fs.appendFile( './public/html/' + `${title}`  + '.html', `file.html`
, function (err) {
  if (err) throw err;
  console.log('Saved!');
});

一直输出

First title
paragraph 1.
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
First Blog Post
paragraph 2
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
First Blog Post 1
paragraph 3
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
First Blog Post 2
paragraph 4
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
First Blog Post 3
paragraph
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }
{ fields: { file: { url: '../../images/cheap-skateboards.png' } } }

并创建一个文件 image.html,它是数组中的最后一个键。如何获得要输出的标题的第一个键?我想在服务器上创建一个以这些标题为文件名的新文件。

【问题讨论】:

  • 所以你只想要标题键对吗?所以你想要一个这样的数组:["First Title", "First Blog Post", "First Blog Post 1", "First Blog Post 2", "First Blog Post 3"]?

标签: javascript json loops


【解决方案1】:

我没弄明白,也许你可以澄清一下,我假设你想要 title 作为键,url 作为值,是这样吗?

那么一个简单的map 就足够了...

请小心,因为键不能有重复的值,而且您可能有重复的标题。

var jsonObj = {
  "items": [
    {
      "sys": { "id": " 01/03/1997" },
      "fields": {
        "title": "First title",
        "p": "paragraph 1.",
        "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
      }
    },
    {
        "sys": { "id": "2 01/03/1997" },
        "fields": {
          "title": "First Blog Post",
          "p": "paragraph 2",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      },
      {
        "sys": { "id": "3 01/03/1997" },
        "fields": {
          "title": "First Blog Post 1",
          "p": "paragraph 3",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      },
      {
        "sys": { "id": "4 01/03/1997" },
        "fields": {
          "title": "First Blog Post 2",
          "p": "paragraph 4",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      },
      {
        "sys": { "id": "8 01/03/1997" },
        "fields": {
          "title": "First Blog Post 3",
          "p": "paragraph",
          "image": { "fields": { "file": { "url": "../../images/cheap-skateboards.png" } } }
        }
      }
  ]
};


var newObject = jsonObj.items.map((x) => {
  const o = {}; // create the object
  o[x.fields.title] = x.fields.image.fields.file.url; // assign the key and value
  return o; // return the new object
});

console.log(newObject); // print

然后您可以简单地遍历 newObject

Object.keys(newObject).forEach(title => {
    const url = newObject[title]
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2011-06-20
    • 1970-01-01
    相关资源
    最近更新 更多