如何遍历json数据并获取特定的键值

时间:2020-06-24 23:58:51

标签: javascript json loops

这里是数据

{
  "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,它是数组中的最后一个键。我如何获得要输出的标题的第一把钥匙?我想用这些标题作为文件名在服务器上创建一个新文件。

1 个答案:

答案 0 :(得分:0)

我做得不太好,也许您可​​以澄清一下,我假设您想将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

然后您可以使用{p>

newObject