1

我有一个奇怪的错误,有时会发生有时不会。

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

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 中的一个错误。

4

2 回答 2

1

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

于 2012-12-01T01:23:37.200 回答
0

您可以通过将 pojo 的属性名称限制为小于 20 来避免 ArrayIndexOutOfBound 异常。如果您在代码中使用任何 Decimal Formatter,您可能会遇到异常。1.9.4 有问题,2.0 肯定是更好的版本

于 2014-11-20T07:26:10.413 回答