我想在解析JSON字符串时test the code overload which can provide一个reviver函数。
所以这段代码:
JSON.parse('{"p": 5}', function(k, v) { if (k === "") return v; return v * 2; }).p;
产生10
(ok)。
然后我问自己,“这if (k === "")
是什么东西?”让我们删除它!:
JSON.parse('{"p": 5}', function(k, v) { return v*2;}).p; //undefined !!
也许是因为5是整数?让我们试试parseInt
:
JSON.parse('{"p": 5}', function(k, v) { return parseInt(v)*2;}).p; //undefined !!
非常奇怪......
那么我想看看哪些键(虽然这里只有一个)导致了麻烦:
JSON.parse('{"p": 5}', function(k, v) { alert(v)}).p;
有2个提醒:
5
[object Object]
恕我直言k
和v
适用于key
和value
,实际上这里只有一个密钥。
什么是另一个警报?并且为什么我必须检查if (k === "")
?
答案 0 :(得分:3)
答案在您提供的链接中......
在最终使用空字符串和最高值调用reviver,以允许转换最高值。
v
的情况下, k === ""
是对象本身