我收到一个大型字符串化 JSON 对象,其中包含多个字段,其中一些字段很大。例如,假设该对象类似于:
{
"somethingHuge": (200 000 character string)
"relevantField": true
}
我只对
relevantField
感兴趣,所以为了节省性能,我不想解析somethingHuge
,分配内存来保存该字符串等。解析时是否可以跳过该字段?
注意:物体的形状是由外部因素决定的,无法只接收相关数据。
您可以使用 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 库)中删除它之类的操作,我看不到任何其他方法。