杰克森JsonMappingException
我尝试使用Jerkson将scala case类序列化为JSON字符串,如下所示:杰克森JsonMappingException,json,scala,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对象。 调用失败,出现以下异常: 原因:or
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没有消息]
考虑到您有“数百万”个对象,我猜您可能达到了
String
的长度限制。尝试生成一个<代码> OuttoStudio,即,代码> JSON。生成(Palelista,out)< /C> > < /P> < P>您可能需要考虑使用流式解决方案。您可以使用Jackson流媒体API之一:
JsonGenerator jg = jsonFactory.createJsonGenerator(file, JsonEncoding.UTF8); // or Stream, Reader
或者,您可以使用令牌缓冲区(这在某些情况下被认为是最佳实践):
详情:
TokenBuffer buffer = new TokenBuffer();
// serialize object as JSON tokens (but don't serialize as JSON text!)
objectMapper.writeValue(buffer, myBean);