Jackson解析器中的InputBuffer

时间:2015-09-24 21:17:03

标签: java json jackson

我使用Jackson解析JSON文件。该文件作为流传递给Jackson以创建解析器。以下是示例代码:

JsonFactory f = new JsonFactory();
JsonParser parser = f.createParser(inputStream);

我知道createParser()从流中预取数据到输入缓冲区。从inputBuffer提供对nextToken()的后续调用。在我的应用程序中,除了解析之外,我还想跟踪inputStream的文件偏移量,直到我消耗了数据。由于这种缓冲,偏移跟踪不起作用。

有没有人知道杰克逊是否有办法禁用缓冲?或者,是否有一个API调用,我可以用来确定缓冲区是否有尚未消耗的数据?

1 个答案:

答案 0 :(得分:4)

为什么不使用JsonParser.getTokenLocation()JsonParser.getCurrentLocation()来跟踪文件偏移量?

返回的对象似乎有字节位置(除了字符位置),它应该位于底层输入流中......

http://fasterxml.github.io/jackson-core/javadoc/2.2.0/com/fasterxml/jackson/core/JsonParser.html#getCurrentLocation()