我的预期任务:获取大量数据(1 GB和更大的大小)json字符串,操作(执行一些格式化,解析json,重构json数据)并将新格式化的json字符串写为响应。 处理这种情况的更好方法是什么?
在某些博客中,我发现在流中存储大量数据是处理大量数据的有效方法,但如何操作流数据?
我遇到的异常/错误:致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足 中止(核心倾销)
输入JSON:
"docs": [
{
"note_text": ["7657011|20MAR08|somehugedata|||7657012|20MAR09|somehugedata"],
id:"c123"
},
{
"note_text": ["7657001|23MAR08|somehugedata|||7657002|21MAR08|somehugedata"],
id:"c124"
}
]
新格式化的JSON:
"docs": [
{
id:"c123",
note_text : "somehugedata",
date : "20MAR08"
note_id : "7657011"
},
{
id:"c123",
note_text : "somehugedata",
date : "20MAR09"
note_id : "7657012"
},
{
id:"c124",
note_text : "somehugedata",
date : "23MAR08"
note_id : "7657001"
},
{
id:"c124",
note_text : "somehugedata",
date : "21MAR08"
note_id : "7657002"
}
]
答案 0 :(得分:1)
看看JSONStream。有了它,你不必将整个巨大的JSON blob加载到内存中。您将逐个处理源JSON中的对象,在JSONStream.parse()
中为它们指定正确的选择模式。