javascript - 是否有原生 JavaScript 方法来解析格式不正确的类似 JSON 的字符串?

标签 javascript json parsing

考虑将以下文件用作 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/

相关文章:

c# - 解析 C 源文件并获取函数列表

javascript - 如何从 Alfresco Javascript 中访问本地 CSS 文件?

javascript - 给出动态数组时 jsTree 错误

c# - 需要 Newtonsoft JSON 反序列化帮助

javascript - 如何使用文档客户端修改 dynamodb 中嵌入列表中的元素

python - 如何解码编码为\uXXXX 的 Unicode 转义序列表情符号?

python - 如何递归查找嵌套 JSON 中的特定键?

Java:用于表达式解析和评估的库,其标识符事先未知

javascript - 使用 jquery 完成后 Bootstrap select 不起作用

javascript - 我如何阻止 Babel 将其更改为未定义?