Javascript JS加载损坏的JSON文件
我想知道在JS中是否可以读取本地损坏的JSON文件?我无法控制创建的本地json文件。我想知道我是否能读懂多余逗号前的所有行 从“./Users.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.
[
{
"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)导入用户