考虑将以下文件用作 node.js 中使用的随附 JavaScript 的输入。该脚本将失败并返回 "Unexpected token h"
,因为 hello
不在引号中。有没有办法解析这个文件而不必先修复字符串?
data.json
{
"foo": "bar",
hello: "world",
"jane": "fonda",
jimmy: "buffet"
}
index.js
/*jslint node:true*/
"use strict";
var fs = require("fs");
fs.readFile("./data.json", "utf8", function (err, data) {
var jsonData = JSON.parse(data);
console.log(jsonData);
});
最佳答案
正如 Vinin Paliath 所说,这是不可能的。如果不正确的语法可以解析,那么它就不是不正确的语法,不是吗?
充其量,您可以尝试编写一个自定义函数来清除常见的 JSON 标记错误。例如。像您的示例中那样检查是否有遗漏的引号。
如果您的 JSON 是不正确的 JSON 但作为 javascript 对象文字是正确的,您可以使用 eval。 eval('var jsonData = ' + data);
不过,出于安全考虑,我强烈建议不要使用用户输入的数据。例如有人将 {};alert("intrusive message");
放入 data
。
关于javascript - 是否有原生 JavaScript 方法来解析格式不正确的类似 JSON 的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33380526/