1. ホーム
  2. json

[解決済み] JSONキーの名前を変更する方法

2023-05-22 09:47:15

質問

以下の内容を持つJSONオブジェクトがあります。

[
  {
    "_id":"5078c3a803ff4197dc81fbfb",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 1"
  },
  {
    "_id":"5078c3a803ff4197dc81fbfc",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 2"
  }
]

となるように、"_id"キーを"id"に変更したいのですが、どうすればよいでしょうか?

[
  {
    "id":"5078c3a803ff4197dc81fbfb",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 1"
  },
  {
    "id":"5078c3a803ff4197dc81fbfc",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 2"
  }
]

Javascript、jQuery、Ruby、Railsのいずれかを使用して、どのようにそれを行うのでしょうか?

ありがとうございます。

どのように解決するのですか?

  1. 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":"[email protected]",
      "image":"some_image_url",
      "name":"Name 1"
    },
    {
      "_id":"5078c3a803ff4197dc81fbfc",
      "email":"[email protected]",
      "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 );