Jerkson JsonMappingException

时间:2012-11-12 05:03:08

标签: json scala

我正在尝试使用Jerkson将scala case类序列化为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消息]

2 个答案:

答案 0 :(得分:1)

您可能需要考虑使用流媒体解决方案。您可以使用其中一个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);

详细信息:Jackson Streaming Documentation

答案 1 :(得分:0)

鉴于你有“数百万”对象,我猜你可能会达到String的长度限制。尝试生成OutputStream,即Json.generate(pageList, out)