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

时间:2013-01-12 15:20:05

标签: javascript json parsing reviver-function

我想在解析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]

恕我直言kv适用于keyvalue,实际上这里只有一个密钥。

什么是另一个警报?并且为什么我必须检查if (k === "")

1 个答案:

答案 0 :(得分:3)

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

  

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

v

的情况下,

k === ""是对象本身