将大型列表转换为 JSON 字符串



我有一个包含9864284元素的列表,我想将此列表转换为json字符串,我使用了递归方法,但我总是有OutOfMemory异常。

public String createRecuJson(List<CustomObject> inputList, int nElement, int index, List<String> result, String resJson) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
if( index + nElement > inputList.size() ) {
resJson = resJson.concat(","+objectMapper.writeValueAsString(inputList.subList(index,inputList.size())).replace("[", "").replace("]", ""));
result.add(objectMapper.writeValueAsString(inputList.subList(index,inputList.size())));
return resJson;
}else {
final List<CustomObject> subListCustomObjects = inputList.subList(index, index+nElement);
if(resJson.length() == 0)
resJson.concat(objectMapper.writeValueAsString(subListCustomObjects).replace("[", "").replace("]", ""));
else
resJson = resJson.concat(","+objectMapper.writeValueAsString(subListCustomObjects).replace("[", "").replace("]", ""));
result.add(objectMapper.writeValueAsString(subListCustomObjects));
return createRecuJson(inputList, nElement, index+nElement, result, resJson);
}
}

尝试使用Jackson Streaming API而不是您的实现。它是对 JSON 内容的最低写入访问权限级别。

在这里你可以找到一些例子。

最新更新