Jackson CSV Writer抛出ArrayIndexOutOfBoundsException

时间:2012-11-30 17:07:01

标签: java json csv jackson

我有一个奇怪的错误,有时会发生某些时候没有。

使用与Jackson CSV数据格式化器1.9.4(jackson-dataformat-csv)的以下版本Jackson 1.9.9相同的数据,我得到以下错误。

java.lang.ArrayIndexOutOfBoundsException 
at java.lang.System.arraycopy(Native Method) 
at org.codehaus.jackson.util.TextBuffer.append(TextBuffer.java:458) 
at org.codehaus.jackson.io.SegmentedStringWriter.write(SegmentedStringWriter.java:69) 
at com.fasterxml.jackson.dataformat.csv.impl.CsvWriter._flushBuffer(CsvWriter.java:514) 
at com.fasterxml.jackson.dataformat.csv.impl.CsvWriter.endRow(CsvWriter.java:252) 
at com.fasterxml.jackson.dataformat.csv.CsvGenerator.finishRow(CsvGenerator.java:579) 
at com.fasterxml.jackson.dataformat.csv.CsvGenerator.close(CsvGenerator.java:277) 
at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:2584) 
at org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:2097) 

我也在一些列上得到双逗号。我的猜测是它是CsvGenerator中的一个错误。

2 个答案:

答案 0 :(得分:1)

这听起来像个错误。但有一点需要注意的是1.9.x版本并没有真正开发,所以如果可能的话你会想要使用Jackson 2.x的版本(最新版本为2.1.1)。

答案 1 :(得分:0)

您可以通过将pojo的属性名称限制为小于20来避免ArrayIndexOutOfBound异常。如果您在代码中使用任何十进制格式化程序,则可能会出现异常。 1.9.4是错误的,2.0绝对是一个更好的版本