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