JSON.toJSONString(jsonResult)
当尝试使用 JSON.toJSONString() 方法将一个较大的对象转换为 JSON 字符串时,可能会导致内存溢出的问题。Handler dispatch failed; nested exception is java.lang.OutOfMemoryError
解决方法:使用流式处理,以及逐步地将 JSON 字符串写入输出流,而不是将整个字符串存储在内存中
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(jsonResult);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JsonGenerator jsonGenerator = objectMapper.getFactory().createGenerator(outputStream);
jsonGenerator.writeRawValue(json.substring(0, Math.min(json.length(), 2000)));
jsonGenerator.flush();
String jsonString = outputStream.toString();
使用 Jackson 库的 ObjectMapper 类将 jsonResult 对象转换为 JSON 字符串。然后,我们创建了一个 ByteArrayOutputStream 输出流和一个 JsonGenerator 对象。
通过使用 JsonGenerator 的 writeRaw() 方法,我们将 JSON 字符串逐步写入输出流,并通过设置长度限制,只写入前 2000 个字符。最后,我们将输出流转换为字符串