JavaScript Analizando con una función de revivimiento


Ejemplo

Se puede usar una función de recuperación para filtrar o transformar el valor que se está analizando.

5.1
var jsonString = '[{"name":"John","score":51},{"name":"Jack","score":17}]';

var data = JSON.parse(jsonString, function reviver(key, value) {
  return key === 'name' ? value.toUpperCase() : value;
});
6
const jsonString = '[{"name":"John","score":51},{"name":"Jack","score":17}]';

const data = JSON.parse(jsonString, (key, value) =>
  key === 'name' ? value.toUpperCase() : value
);

Esto produce el siguiente resultado:

[
  {
    'name': 'JOHN',
    'score': 51
  },
  {
    'name': 'JACK',
    'score': 17
  }
]

Esto es particularmente útil cuando se deben enviar datos que deben ser serializados / codificados cuando se transmiten con JSON, pero uno quiere acceder a ellos deserializados / decodificados. En el siguiente ejemplo, una fecha se codificó en su representación ISO 8601. Usamos la función reviver para analizar esto en una Date JavaScript.

5.1
var jsonString = '{"date":"2016-01-04T23:00:00.000Z"}';

var data = JSON.parse(jsonString, function (key, value) {
  return (key === 'date') ? new Date(value) : value;
});
6
const jsonString = '{"date":"2016-01-04T23:00:00.000Z"}';

const data = JSON.parse(jsonString, (key, value) =>
  key === 'date' ? new Date(value) : value
);

Es importante asegurarse de que la función de recuperación devuelve un valor útil al final de cada iteración. Si la función de recuperación devuelve undefined , ningún valor o la ejecución cae hacia el final de la función, la propiedad se elimina del objeto. De lo contrario, la propiedad se redefine para ser el valor de retorno.