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