首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何遍历json数据并获取特定键值

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

Stack Overflow用户
提问于 2020-06-25 07:58:52
回答 1查看 40关注 0票数 0

以下是数据

代码语言:javascript
复制
{
  "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" } } }
        }
      }
  ]
}

我试图在服务器端遍历这些数据,并获得一个特定的键值。

代码语言:javascript
复制
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!');
});

它一直在输出

代码语言:javascript
复制
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,该文件是数组中的最后一个关键字。如何获得要输出的标题的第一个键?我想在服务器上创建一个新文件,文件名为这些标题。

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 08:08:13

我没有很好地理解它,也许你可以澄清一下,我假设你想要title作为键,url作为值,是这样吗?

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

只是要小心,因为key不能有重复的值,而且你可能会有重复的标题。

代码语言:javascript
复制
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

代码语言:javascript
复制
Object.keys(newObject).forEach(title => {
    const url = newObject[title]
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62565825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档