簡體   English   中英

使用 JSON.Parse Reviver 轉換 object

[英]Using the JSON.Parse Reviver to transform an object

是否可以在 JSON.parse function 上使用 reviver 來更改正在解析的數據的結構?

例如,我如何解析下面的字符串:

fruitString = "{"Apple":2,"Orange":4}";

到下面的object?

 fruitPrices: { "Apple":{ "price": 2 }, "Orange":{ "price": 4 } }

我試過的是:

 let fruitPrices = JSON.parse(fruitString, (key, value) => { return {key: {'price' => value}}; });

但我得到的是:

>      fruitPrices:{
>         key:{
>            price:{
>               Apple:{
>                  key:{
>                     price:2
>                   }
>                }
>               Orange:{
>                  key:{
>                     price:4
>                   }
>                }
>             }
>           }
>        }

請你幫我理解我做錯了什么?

以下是你如何使用復蘇器來做到這一點:

let fruitPrices = JSON.parse(
    fruitString,
    (key, value) => key === '' ? value : {price: value}
);

對空字符串的檢查是由 reviver 如何遍歷 object 引起的。 最后一次迭代恰好采用了您的最終 object 並且最終檢查的密鑰始終是一個空字符串。 我們不想在最后一步改變任何東西,所以我們只是在那里返回value

無需用密鑰包裝。 https://jsbin.com/pajosorapa/1/edit?html,js,output

 var fruitString = "{\"Apple\":2,\"Orange\":4}"; var fruitPrices = JSON.parse(fruitString, (key, value) => { if (typeof(value) === 'number'){ return { 'price': value }; } return value; }); console.log(JSON.stringify(fruitPrices));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM