Búsqueda de sitios web

javascript - ¿Cómo omitir ciertos campos en un objeto JSON al analizar para mejorar el rendimiento?


Estoy recibiendo un gran objeto JSON en forma de cadena, con varios campos, algunos de los cuales son grandes. Por ejemplo, digamos que el objeto es algo como:

{
  "somethingHuge": (200 000 character string)
  "relevantField": true
}

Solo me interesa relevantField, así que para ahorrar rendimiento, no quiero analizar somethingHuge, asignar memoria para contener esa cadena, etc. ¿Es posible omitir ese campo al analizar?

Nota: la forma del objeto está determinada por factores externos, no hay manera de recibir solo los datos relevantes.

Respuesta #1

Podrías usar el argumento reviver para evitar que el campo se almacene en tu objeto de resultado. Todavía se analizará, pero al menos se puede desechar de inmediato y tu objeto resultante no necesitará asignar espacio para la propiedad.

const json = "{ \"somethingHuge\": \"(200 000 character string)\", \"relevantField\": true }";

const parsedObject = JSON.parse(json, (key, value) => {
  return key === "somethingHuge" ? undefined : value;
});

console.log(parsedObject);

No estoy seguro de cuánto beneficio de rendimiento supondría esto, ya que no lo he medido, pero sin hacer algo como eliminarlo del análisis de cadenas JSON (o usar una biblioteca JSON personalizada) no veo otra forma de evitarlo.