[英]Is there a native JavaScript way to parse a poorly formatted JSON-like string?
考虑以下文件用作 node.js 中使用的随附 JavaScript 的输入。 该脚本将失败并显示"Unexpected token h"
因为hello
不在引号中。 有没有办法解析这个文件而不必先修复字符串?
数据.json
{
"foo": "bar",
hello: "world",
"jane": "fonda",
jimmy: "buffet"
}
索引.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
。
Wingblade 的回答涵盖了如何使用eval
来做到这一点,它不会在strict mode
下strict mode
。 一种替代方法是创建一个以格式错误的数据作为函数体的Function
对象:
var f = new Function("return " + data);
var ff = f();
console.log(ff);
这在strict mode
下strict mode
,但我不确定它离eval
多远。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.