【发布时间】:2020-12-05 13:00:54
【问题描述】:
我尝试构建一个 JSON 对象,该对象最终将保存到一个文件中。但是我发现如果我使用接近一个“元素+=元素”,它会抛出“无效的字符串长度”字符串。但是对于方法 2,我可以连接一个很长的字符串并保存一个文件。 (该文件大约为 50mb)。所以我想知道我的第一种方法有什么问题?
const person = {
id: 1,
name: "john"
}
personJson = JSON.stringify(person);
personJson = personJson + ',';
let element = personJson;
for (let index = 0; index < 500; index++) {
element += element;
}
let element = personJson;
for (let index = 0; index < 100000; index++) {
element = element + personJson;
}
【问题讨论】:
-
没有 JSON 对象这样的东西。 JSON 始终是一个字符串。不要尝试自己编码 JSON。
JSON.stringify([ person1, person2, person3 ])可以正常工作 -
不是对象或数组是js中的引用类型,所以它使用堆内存。如果我将 100000 个对象添加到数组中,那么反序列化为 JSON 会增加显着的内存使用量吗?或者,我序列化一个对象并将其连接 1000 次(cos 字符串在 js 中是 premetiive 类型,使用更少的内存)并保存到一个使用更少内存的文件?
标签: javascript string concatenation string-concatenation