Saltar al contenido

Cómo cambiar el nombre de JSON key

Esta es la contestación más acertada que encomtrarás compartir, sin embargo obsérvala detenidamente y valora si se adapta a tu proyecto.

Solución:

  1. Analizar el JSON
const arr = JSON.parse(json);
  1. Para cada objeto en el JSON, cambie el nombre del key:
obj.id = obj._id;
delete obj._id;
  1. Stringifica el resultado

Todos juntos:

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 );

En este caso, sería más fácil de usar. string reemplazar. Serializar el JSON no funcionará bien porque _id se convertirá en el nombre de propiedad del objeto y cambiar el nombre de una propiedad no es una tarea sencilla (al menos no en la mayoría de los idiomas, no es tan malo en javascript). En lugar de eso, hazlo;

jsonString = jsonString.replace(""_id":", ""id":");

Como mencionó evanmcdonnal, la solución más fácil es procesar esto como string en lugar de JSON,

var 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"];
    
json = JSON.parse(JSON.stringify(json).split('"_id":').join('"id":'));

document.write(JSON.stringify(json));

Esto convertirá los datos JSON dados a string y reemplace “_id” por “id” y luego vuelva a convertirlo al formato JSON requerido. Pero usé split y join en vez de replace, porque replace reemplazará solo la primera aparición del string.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *