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