【问题标题】:How to parse only specific attributes from a JSON file to an array如何仅将 JSON 文件中的特定属性解析为数组
【发布时间】:2021-06-14 23:46:05
【问题描述】:

我有这个 JSON 数组:

{
  "data": [
    {
      "id": 6,
      "pnome": "dasda",
      "unome": "dad",
      "avatar": 1,
      "email": "d",
      "pass": "password",
      "ponto": 0
    },
    {
      "id": 3,
      "pnome": "Enguias",
      "unome": "Enguias outra vez",
      "avatar": 10,
      "email": "enguias@enguias.enguias",
      "pass": "enguias",
      "ponto": 0
    },
    {
      "id": 2,
      "pnome": "André",
      "unome": "Marques",
      "avatar": 1,
      "email": "aglmarque@gmail.com",
      "pass": "yet1",
      "ponto": 0
    }
  ]
}

我用 axios 把它放到一个数组中,像这样:

    axios.get(my_url_api)
    .then((res)=>{
        const txt = JSON.stringify(res.data.data);
        const users = JSON.parse(txt)
    })

这使得 users 数组拥有 JSON 文件中的所有信息。我怎样才能做到这一点,以便我只传递特定属性,如电子邮件并传递?它看起来像这样:

{
  "data": [
    {
      "email": "d",
      "pass": "password"
    },
    {
      "email": "enguias@enguias.enguias",
      "pass": "enguias"
    },
    {
      "email": "aglmarque@gmail.com",
      "pass": "yet1"
    }
  ]
}

【问题讨论】:

  • 为什么要对直接来自 JSON 的数据进行字符串化?然后立即再次解析?
  • 是的,你可以做const users = res.data.data。此外,它不是 JSON 数组。是JSON(文本),由axios解析成数组。了解这种区别将使您更容易意识到什么时候您实际上需要 JSON.stringify 和 JSON.parse(您通常不需要)。无论如何,所有这些都完全无关紧要;这是关于从数组中的对象中删除属性。

标签: javascript arrays json javascript-objects


【解决方案1】:

您可以使用Array.map() 函数删除不必要的字段,如下例所示:

let res = {
"data": [
{
"id": 6,
"pnome": "dasda",
"unome": "dad",
"avatar": 1,
"email": "d",
"pass": "password",
"ponto": 0
},
{
"id": 3,
"pnome": "Enguias",
"unome": "Enguias outra vez",
"avatar": 10,
"email": "enguias@enguias.enguias",
"pass": "enguias",
"ponto": 0
},
{
"id": 2,
"pnome": "André",
"unome": "Marques",
"avatar": 1,
"email": "aglmarque@gmail.com",
"pass": "yet1",
"ponto": 0
}
]
}

res.data = res.data.map(item => {
  return {
  email: item.email,
  pass: item.pass
  };
});

console.log(res);

【讨论】:

  • 单线解构:res.data = res.data.map(({ email, pass }) => ({ email, pass })
  • 如果您立即知道答案,那很可能是重复的。请先检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2020-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多