【发布时间】:2012-12-27 00:17:29
【问题描述】:
我想在解析 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(好的)。
但后来我问自己,“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 === "")?
【问题讨论】:
标签: javascript json parsing reviver-function