0

我正在尝试使用 Jerkson 将 scala 案例类序列化为 JSON 字符串,如下所示:

case class Page(title: String, id: String, ls: List[(String, String, Int)])
val pageList = new mutable.ArrayBuffer[Page]()
val jsonString = Json.generate(pageList)

pageList非常大,有几百万Page个物体。调用失败,出现以下异常:

引起:org.codehaus.jackson.map.JsonMappingException:
[java.lang.ArrayIndexOutOfBoundsException 没有消息]

4

2 回答 2

1

您可能需要考虑使用 Streaming 解决方案。您可以使用其中一种 Jackson Streaming API:

JsonGenerator jg = jsonFactory.createJsonGenerator(file, JsonEncoding.UTF8); // or Stream, Reader

或者,您可以使用 TokenBuffer(在某些情况下被认为是最佳实践):

TokenBuffer buffer = new TokenBuffer();
// serialize object as JSON tokens (but don't serialize as JSON text!)
objectMapper.writeValue(buffer, myBean);

详细信息:杰克逊流媒体文档

于 2012-11-12T13:07:56.203 回答
0

鉴于您有“数百万”个对象,我猜您可能会达到String. 尝试生成一个OutputStream,即Json.generate(pageList, out)

于 2012-11-12T06:03:08.037 回答