网站搜索

javascript - 在解析 JSON 对象时如何跳过某些字段以提高性能?


我正在接收一个大型字符串化的 JSON 对象,其中包含几个字段,其中一些字段很大。例如,假设这个对象类似于:

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

我只对relevantField感兴趣,所以为了节省性能,我不想解析somethingHuge,为那个字符串分配内存等等。在解析时可以跳过该字段吗?

注意:物体的形状取决于外部因素,没有办法只接收相关数据。

答案#1

你可以使用 reviver 参数来避免该字段被存储在你的结果对象上。它仍然会被解析,但至少可以立即丢弃,并且你的结果对象不需要为该属性分配空间。

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

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

console.log(parsedObject);

不确定这会带来多大的性能提升,因为我还没有进行测量,但如果不做像从 JSON 字符串解析中移除它(或使用自定义 JSON 库)这样的操作,我看不出还有其他办法绕过它。