Сбой разбора в большом JSON - PullRequest
0 голосов
/ 07 октября 2019

У меня большой JSON-файл с ~ 220 тыс. Записей размером 223 МБ. Я могу открыть JSON с помощью программы Huge JSON Viewew, что означает, что файл хорошо структурирован, но при анализе он показывает ошибку.


const fs = require("fs");

const rawdata = fs.readFileSync("jsonFile.json");
let inproceedings = JSON.parse(rawdata);

Ошибка, которую он показывает:

undefined:1
��[
^

SyntaxError: Unexpected token � in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (C:\Users\HP\Desktop\DATA\script\jsonFile.js:6:26)
?[90m    at Module._compile (internal/modules/cjs/loader.js:936:30)?[39m
?[90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)?[39m
?[90m    at Module.load (internal/modules/cjs/loader.js:790:32)?[39m
?[90m    at Function.Module._load (internal/modules/cjs/loader.js:703:12)?[39m
?[90m    at Function.Module.runMain (internal/modules/cjs/loader.js:999:10)?[39m
?[90m    at internal/main/run_main_module.js:17:11?[39m
PS C:\Users\HP\Desktop\DATA\script>

1 Ответ

1 голос
/ 07 октября 2019

Проблема в том, что когда вы читаете файл, он читается как буфер. используйте кодирование utf-8 при чтении [https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options]

const rawdata = fs.readFileSync("jsonFile.json",{encoding: 'utf-8'});
let inproceedings = JSON.parse(rawdata);
...