【问题标题】:Can't map imported JSON data: TypeError thrown无法映射导入的 JSON 数据:抛出 TypeError
【发布时间】:2023-01-14 09:31:05
【问题描述】:

这是存储在data.json 文件中的示例数据:

[
  {"id": 23, "name": "Good!", "state": "OK"},
  {"id": 24, "name": "Not good...", "state": "Fail"},
  {"id": 26, "name": "Oh...", "state": "OK"},
  {"id": 27, "name": "What?", "state": "Fail"}
]

这个脚本试图映射数据:

import * as data from './data.json'

let jsonData = data
console.log(jsonData)

jsonData = jsonData.map(({name, state}) => ({name, state}))
console.log(jsonData)

输出是:

{default: Array(4)}
default
:
(4) [{...}, {...}, {...}, {...}]
0
:
(3) {id: 23, name: "Good!", state: "OK"}
1
:
(3) {id: 24, name: "Not good...", state:...}
2
:
(3) {id: 26, name: "Oh...", state: "OK"}
3
:
(3) {id: 27, name: "What?", state: "Fail...}
TypeError: jsonData.map is not a function
    at <anonymous>:35:21
    at dn (<anonymous>:16:5449)

所以,第一个 console.log() 调用打印了一些对我来说看起来可迭代的东西。为什么它会抛出 TypeError 呢?

我尝试应用以下技巧:let jsonData = JSON.parse(JSON.stringify(data)) 但我找不到任何有用的东西。

如何解析文件中的数据以使其与map() 方法一起使用?

【问题讨论】:

  • 试试import data from './data.json'
  • 你试过const data = require('./data.json')了吗?
  • 它是您的 json 中的一个数组,而不是带有键/值的“真实”json

标签: javascript json


【解决方案1】:

恭喜!您终于进入了 JavaScript 中奇怪的模块世界。

这可能是你想要的:

import data from './data.json'

【讨论】:

  • 他们会为实现这一目标颁发徽章吗? ;-)
  • @AbreQueVoy 啊他们真的应该!不会说谎,每次我遇到一个奇怪的模块错误,我只是恢复到我知道的方式。
猜你喜欢
  • 2017-12-02
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多