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: [] } \(●´ϖ`●)/
仓库地址
这个包的意思就是说支持 js 里面的那种 object 写法是吗?
@alsotang 正解。不过只是基础类型,js 里面实际上是可以有 function
这类东西以及各种表达式存在的。
大神啊,我昨天才出的题,今天就写好了
我就是不明白为什么JSON标准,key非要双引号。
当看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 如果是 JSON 的一个字符串里面包含了你的正则匹配内容呢?本来我们要保留字符串原样的,但是你正则是否会把它替换加上引号?
@xadillax 我只是一看到正则题目就手痒。(ΦωΦ)
@ChopperLee2011 实际上对于一般的都可以的,就是考虑到一些特殊的恶心数据。当然真要用正则的话正则里面加各种判断也是可以做到的,比如考虑双引号,然后双引号里面有反斜杠双引号什么的。
只不过我的正则是入门级的,没达到那个境界。