[英]JSON.parse reviver function has n+1 keys?
我想测试代码重载,它可以在解析JSON字符串时提供 reviver函数。
所以这段代码:
JSON.parse('{"p": 5}', function(k, v) { if (k === "") return v; return v * 2; }).p;
收益10
(好)。
但后来我问自己,'这是什么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 === "")
?
答案在您提供的链接中...
最终使用空字符串和最高值调用reviver,以允许转换最顶层的值。
v
是k === ""
的情况下的对象本身
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.