如何使用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不想改变原始数据。将数据视为不可变的,尤其是在转换操作中,通常是一个非常好的主意