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

问题描述 投票:0回答:1

我收到一个大型字符串化 JSON 对象,其中包含多个字段,其中一些字段很大。例如,假设该对象类似于:

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

我只对

relevantField
感兴趣,所以为了节省性能,我不想解析
somethingHuge
,分配内存来保存该字符串等。解析时是否可以跳过该字段?

注意:物体的形状是由外部因素决定的,无法只接收相关数据。

javascript json typescript parsing
1个回答
0
投票

您可以使用 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 库)中删除它之类的操作,我看不到任何其他方法。

© www.soinside.com 2019 - 2024. All rights reserved.