java - Jackson 解析器中的 InputBuffer

标签 java json jackson

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

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

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

有谁知道是否有办法在 Jackson 中禁用缓冲?或者,是否有 API 调用可用于确定缓冲区是否包含尚未使用的数据?

最佳答案

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

返回的对象好像有字节位置(除了字符位置),应该是在底层输入流中定位...

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

关于java - Jackson 解析器中的 InputBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32771070/

相关文章:

java - Jackson:如何使@JsonBackReference和自定义反序列化器同时工作?

Java - 一个简单的(对除了我之外的每个人)方法 - 继承

java - 让 Nashorn 运行用户代码

Java 和 JSF,检查服务器上是否存在文件

javascript - 使用MongoDb和Node.js来组织代码

jquery - 使用each()将元素推送到JSON

java - 从 Jackson 解析器生成 JSON

java - 定制的maven可部署(删除了一些依赖项的war)

json - 同一个 Go 结构成员上的多个标签

java - 嵌套对象的简单 Jackson 反序列化