我正在使用Jackson流API将一个非常大的JSON(大约为兆字节)反序列化为POJO。它工作正常,但我想优化它(内存和处理方面,代码在Android上运行)。
我想要优化的主要问题是将大量字符串从UTF-8转换为ISO-8859-1。目前我使用:
String result = new String(parser.getText().getBytes("ISO-8859-1"));
据我了解,解析器最初将令牌内容复制到String(getText()),然后从中创建一个字节数组(getBytes()),然后用于创建所需编码的最终字符串。太多的分配和复制。
理想的解决方案是,如果getText()接受编码参数,只给我最后的字符串,但事实并非如此。
我的想法中有任何其他想法或缺陷吗?
答案 0 :(得分:0)
您可以使用:
parser.getBinaryValue() (present on version 2.4 of Jackson)
或者您可以实现一个ObjectCodec(使用知道将字节转换为ISO8859-1中的字符串的readValue(...)方法)并使用parser.setCodec()进行设置。
如果您可以控制json生成,请避免使用不同于UTF-8的字符集。