首页 > 解决方案 > JSON 中位置 0 处的意外标记

问题描述

我有一个 JS 文件,它向 API 发出 GET 请求,然后将结果输出到 JSON 文件。在另一个JS文件中,它是通过读取它来解析JSON文件,但是遇到了错误。

SyntaxError: Unexpected token � in JSON at position 0 at JSON.parse (<anonymous>) at C:\Users\user\Desktop\node_express\oncall_api\readjson.js:5:24

JS代码

const fs = require('fs');
fs.readFile('log.json', (err, data) => {
    if (err) throw err;
    let results = JSON.parse(data);
    console.log(results);
});

json文件

{"personName":["personOne"],"alsoNotifyList":null,"currStart":"2021-03-30T09:00:00-07:00","currEnd":"2021-04-06T09:00:00-07:00"}

我已经手动删除了方括号,但这似乎也没有解决问题。

此外,如果我将 json 内容硬编码到 parse() 函数中,它在以正确格式打印 json 方面似乎工作正常。

let results = JSON.parse('{"personName":["personOne"],"alsoNotifyList":null,"currStart":"2021-03-30T09:00:00-07:00","currEnd":"2021-04-06T09:00:00-07:00"}');
console.log(results.personName) //works and return ['personOne']

标签: javascriptnode.jsjson

解决方案


很可能您只需要指定编码,因此,假设utf8

fs.readFile('log.json', { encoding: 'utf8' }, (err, data) => {

或者,如果您使用的是旧版本的节点,

fs.readFile('log.json', 'utf8', (err, data) => {

推荐阅读