如何使用javascript操作json对象和添加密钥?
这就是我得到的回应如何使用javascript操作json对象和添加密钥?,javascript,json,Javascript,Json,这就是我得到的回应 result = [{ "storeId": "4543", "type": "full", "overSerializedItems": [3548240, 91511753, 345555], }, { "storeId": "5462", "type": "half", "overSerializedItems": [2548240, 9566666], } ] 我想操作这个json并向overSeriali
result = [{
"storeId": "4543",
"type": "full",
"overSerializedItems": [3548240, 91511753, 345555],
},
{
"storeId": "5462",
"type": "half",
"overSerializedItems": [2548240, 9566666],
}
]
我想操作这个json并向overSerializedItems添加键
result = [{
"storeId": "4543",
"type": "full",
"overSerializedItems": [
{storeId: '3548240'},
{storeId: '91511753'},
{storeId: '345555'}
],
},
{
"storeId": "5462",
"type": "half",
"overSerializedItems": [
{storeId: '2548240'},
{storeId: '9566666'}
],
}
]
在objet中不能有多个storeId密钥。但是您可以有多个具有storeId的对象
overSerializedItems: [{storeId:...}, {storeId:...}]
您可以这样变换:
var result = [
{
"storeId": "4543",
"type": "full",
"overSerializedItems": [3548240,91511753,345555],
},
{
"storeId": "5462",
"type": "half",
"overSerializedItems": [2548240,9566666],
}
];
var trans = result.map(w => {
return {
storeId: w.storeId,
type: w.type,
overSerializedItems: w.overSerializedItems.map(x => { return {storeId: x.toString()} })
}
})
对于该输出,需要使用两个
forEach()
循环:
var结果=[{
“存储ID”:“4543”,
“类型”:“完整”,
“超序列化数据项”:[354824091511753345555],
},
{
“存储ID”:“5462”,
“类型”:“一半”,
“超序列化数据项”:[25482409566666],
}
];
结果.forEach(函数(obj){
obj.overSerializedItems.forEach(函数(val,索引){
obj.overSerializedItems[index]={'store':val.toString()};
});
});
控制台日志(结果)
单个对象不能有相同的键名storeId
比如{storeId:3548240,storeId:91511753,storeId:345555}
但是您可以有一个对象数组,比如,浏览器应该如何确定您要获取的[{storeId:3548240},{storeId:91511753},{storeId:345555}
obj.overSerializedItems.storeId
storeId
?“需要将其转换为以下格式”我已更新了预期的json@Uidev123你更新了什么?它仍然不正确。不要忘记将x
转换为string@Phil是 啊这就是我在回答中添加的内容:)为什么要用map()
使事情复杂化,因为OP需要更改相同的结果
数组,所以两个forEach()
可以工作:对我来说,用map而不是嵌套数组读取lambda表达式更简单foreach@AnkitAgarwal也许OP不想改变原始数据。将数据视为不可变的,尤其是在转换操作中,通常是一个非常好的主意