我有一个 .json 文件,其中存储了人名。我正在使用 Node 管理器的文件系统读取此文件的内容,然后尝试将此 json 转换为字符串并将其解析为 JS 对象。将其解析为 JS 对象后,我得到的是字符串类型而不是对象。 这是示例 json 文件:
{
"21154535154122752": {
"username": "Stanislav",
"discriminator": "0001",
"id": "21154535154122752",
"avatar": "043bc3d9f7c2655ea2e3bf029b19fa5f",
"shared_servers": [
"Reactiflux",
"Discord Testers",
"Official Fortnite",
"Discord API"
]
}
}
这是处理数据的代码:
const string_data = JSON.stringify(fs.readFileSync('data/users.json', 'utf8'));
const data = JSON.parse(string_data);
console.log(typeof(data)); // <-- this line here shows the type of data as string
const results_array = Object.values(data);
其中 fs 是来自 npm 的文件系统包。
最佳答案
不要使用 JSON.stringify
,因为它会进一步改变 JSON 对象的字符串表示形式。下面是正在发生的事情的一个例子
想象一下,如果您的文件中有如下所示的数据
{
"key": "value"
}
当您读取文件(使用 readFileSync
)并应用 JSON.stringify
时,它会转换为如下所示的新字符串。您会注意到双引号现在被转义了
"{\"key\": \"value\"}"
现在,当您使用 JSON.parse
解析它时,您将返回从文件中读取的相同字符串,而不是获取所需的 object
。
基本上是先执行再撤销stringify操作
关于javascript - NodeJs JSON 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49720767/