F[嗶][嗶]k JSON
解析非正常 JSON 字符串的一个包。
安装
$ npm install fbbk-json
使用
这个包只有一个函数:
var fJSON = require("fbbk-json");
fJSON.parse(A_JSON_STRING);
但是
这个包支持如下的 JSON 字符串(即在 javascript 中我们通常申明的样子,没有引号)。
举个栗子🌰
'{"foo": "bar","baz": true}' <-- JSON 和 fJSON 都支持
'{foo: "bar",baz: true}' <-- 只有 fJSON 支持! ٩(๑•̀ω•́๑)۶
所以你可以:
var json1 = '{"foo": "bar","baz": true}';
var json2 = '{foo: "bar",baz: true,c:[]}';
JSON.parse(json1); ///< { foo: 'bar', baz: true }
JSON.parse(json2); ///< SyntaxError: Unexpected token f
fJSON.parse(json1); ///< { foo: 'bar', baz: true }
fJSON.parse(json2); ///< { foo: 'bar', baz: true, c: [] } \(●´ϖ`●)/
仓库地址
8 回复
当看example里的例子,用正则实现了一下,不知道是不是满足要求了
var b = '{ “foo” : “bar",baz: true , “num” : 123}’; var re = /([^\s{,”]+\s*):\s+((“.*?”)|\d+|true)/g; var c = b.replace(re,""$1":$2"); console.log(JSON.parse©);
##output [object Object] { baz: true, foo: "bar", num: 123 }
@ChopperLee2011 实际上对于一般的都可以的,就是考虑到一些特殊的恶心数据。当然真要用正则的话正则里面加各种判断也是可以做到的,比如考虑双引号,然后双引号里面有反斜杠双引号什么的。
只不过我的正则是入门级的,没达到那个境界。