繁体   English   中英

JSON.parse reviver函数有n + 1个键吗?

[英]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]

恕我直言kvkeyvalue ,实际上这里只有一个键。

什么其他警报? 为什么我要检查if (k === "")

答案在您提供的链接中...

最终使用空字符串和最高值调用reviver,以允许转换最顶层的值。

vk === ""的情况下的对象本身

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM