我有一个包含以下内容的JSON对象:

[
  {
    "_id":"5078c3a803ff4197dc81fbfb",
    "email":"user1@gmail.com",
    "image":"some_image_url",
    "name":"Name 1"
  },
  {
    "_id":"5078c3a803ff4197dc81fbfc",
    "email":"user2@gmail.com",
    "image":"some_image_url",
    "name":"Name 2"
  }
]

我想把"_id"键改为"id",这样它就变成了

[
  {
    "id":"5078c3a803ff4197dc81fbfb",
    "email":"user1@gmail.com",
    "image":"some_image_url",
    "name":"Name 1"
  },
  {
    "id":"5078c3a803ff4197dc81fbfc",
    "email":"user2@gmail.com",
    "image":"some_image_url",
    "name":"Name 2"
  }
]

我该如何使用Javascript、jQuery或Ruby、Rails来做到这一点呢?

谢谢

推荐答案

  1. Parse the JSON
const arr = JSON.parse(json);
  1. 对于JSON中的每个对象,重命名键:
obj.id = obj._id;
delete obj._id;
  1. 强化结果

总而言之:

function renameKey ( obj, oldKey, newKey ) {
  obj[newKey] = obj[oldKey];
  delete obj[oldKey];
}

const json = `
  [
    {
      "_id":"5078c3a803ff4197dc81fbfb",
      "email":"user1@gmail.com",
      "image":"some_image_url",
      "name":"Name 1"
    },
    {
      "_id":"5078c3a803ff4197dc81fbfc",
      "email":"user2@gmail.com",
      "image":"some_image_url",
      "name":"Name 2"
    }
  ]
`;
   
const arr = JSON.parse(json);
arr.forEach( obj => renameKey( obj, '_id', 'id' ) );
const updatedJson = JSON.stringify( arr );

console.log( updatedJson );

Json相关问答推荐

时间和日期数据绘制不正确

无法根据vega规范中的条件设置文本 colored颜色

如何使用表键名称GROUP_BY

JSON:将项';S键/名称移动到属性中,并使用JQ将其转换为数组

Jolt 变换以展平 json 字符串数组

VBA-JSON 嵌套集合解析为 Excel

如何在不使用 Newtonsoft.JSON 的情况下序列化/反序列化

如何在 Dart 中与多个 map (字典)相交

hook到 Decodable.init() 以获得未指定的键?

Swift:如何从字典中删除空值?

解析包含换行符的 JSON

如何从 JSON 对象中获取日期

规范化 JSON 文件

如何在 swift 2 中获取 Alamofire.request().responseJSON 的结果值?

Spring Security 和 JSON 身份验证

将序列化表单的数据转换为 json 对象

如何让 javascript 从 .json 文件中读取?

Python 到 JSON 序列化在十进制上失败

PHP json_encode json_decode UTF-8

Jersey 2.0 相当于 POJOMappingFeature