Javascript 使用JSON.Parse恢复程序转换对象

Javascript 使用JSON.Parse恢复程序转换对象,javascript,json,parsing,Javascript,Json,Parsing,是否可以在JSON.parse函数上使用reviver来更改正在解析的数据的结构 例如,如何解析下面的字符串: fruitString=“{“苹果”:2,“橙色”:4}” 到以下对象 我试过的是: 但我得到的是: > fruitPrices:{ > key:{ > price:{ > Apple:{ > key:{ >

是否可以在JSON.parse函数上使用reviver来更改正在解析的数据的结构

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

fruitString=“{“苹果”:2,“橙色”:4}”

到以下对象

我试过的是:

但我得到的是:

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

请您帮助我理解我做错了什么?

以下是您如何使用苏醒剂:

let fruitPrices=JSON.parse(
果串,
(键,值)=>key==''值:{price:value}
);
对空字符串的检查是由复活器如何遍历对象引起的。最后一次迭代恰好获取最终对象,最终检查的键始终是空字符串。在最后一步中,我们不想更改任何内容,因此只需在此处返回
value

无需使用key包装。

var fruitString=“{\'Apple\':2,\'Orange\':4}”;
var fruitPrices=JSON.parse(fruitString,(键,值)=>{
如果(类型(值)=“数字”){
返回{‘价格’:值};
}
返回值;
});

log(JSON.stringify(fruitPrices))为什么要用JSON.parse解决这个问题?为什么不解析并映射到您需要的内容?我想这应该是我试图理解reviver回调函数是如何工作的。如果可能的话,我宁愿在解析数据时映射数据,而不添加其他步骤。谢谢。我无法理解该对象是如何遍历的,但这是有意义的。谢谢。如果最终值是一个数字,则此操作有效。
let fruitPrices = JSON.parse(fruitString, (key, value) => {
                      return {key: {'price' => value}};
                  });
>      fruitPrices:{
>         key:{
>            price:{
>               Apple:{
>                  key:{
>                     price:2
>                   }
>                }
>               Orange:{
>                  key:{
>                     price:4
>                   }
>                }
>             }
>           }
>        }