Javascript JS加载损坏的JSON文件

Javascript JS加载损坏的JSON文件,javascript,json,Javascript,Json,我想知道在JS中是否可以读取本地损坏的JSON文件?我无法控制创建的本地json文件。我想知道我是否能读懂多余逗号前的所有行 从“./Users.json”导入用户 [ { "name": "Rob" }, { "name": "Chris" }, { "name": "Daniel" }, ] 您必须编写某种JSON解析器,其中必须逐个字符读取以解析文件 var readable = fs.createReadStream("jsonfile.

我想知道在JS中是否可以读取本地损坏的JSON文件?我无法控制创建的本地json文件。我想知道我是否能读懂多余逗号前的所有行

从“./Users.json”导入用户

[
  {
    "name": "Rob"
  },
  {
    "name": "Chris"
  },
  {
    "name": "Daniel"
  },
]

您必须编写某种JSON解析器,其中必须逐个字符读取以解析文件

var readable = fs.createReadStream("jsonfile.json", {
  encoding: 'utf8',
  fd: null,
});

readable.on('readable', function() {
  var chunk;
  while (null !== (chunk = readable.read(1))) {
    //chunk is one character
    if(chunk == "["){ //JSON array is started }
    if(chunk == "{"){ //Handle JSON object started}

    //In between you can parse each character until you get a `:` character to 
    //identify the key and from there up to a comma it is value. (** Considering the simple JSON file example you provided**)

    if(chunk == "}"){ //Handle JSON object end}
    if(chunk == "]"){ //Handle JSON array end}
  }
});
但我建议你去图书馆看看。否则它将成为一个单独的项目。无论如何,对于JSON类型示例,您可以自己编写一个,因为格式非常简单,并且您知道会出现什么问题(额外的逗号)


通用化解决方案将更加困难。

您需要添加一些正则表达式替换逻辑来删除非法字符。这只是一个基本的例子

var json=`[
{
“姓名”:“Rob”
},
{
“姓名”:“克里斯”
},
{
“姓名”:“丹尼尔”
},
]`
var parsedJson=JSON.parse(JSON.replace(/\}\s*\]/g,'}]'))
console.log(parsedJson)

。作为控制台包装器{top:0;max height:100%!important;}
您是否愿意编写自己的JSON解析器?将数据字符串化,删除最后一个逗号,然后解析JSONI JSON是否总是这样构造(只有同级)?如果是这样,那么@Boo的建议就行了。如果你不知道,那么它必须是灵活的。在这种情况下,这个库可能会有所帮助:如果您内联了json对象,那么可以使用JSON5工作,否则它在导入json文件时会遇到困难。通过从“./Users.json”或const Users=require(“./Users.json)导入用户