簡體   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