如何在杰克逊杰森图书馆做peek()?

时间:2010-06-24 10:19:37

标签: java json parsing jackson

我正在使用Streaming API JsonParser库的Jackson在java中进行一些自定义json解析。

有没有办法实现类似于peek()方法的功能,返回下一个标记,但光标位置不会向前移动?

此用例类似于以下内容:

JsonParser parser = new JsonFactory().createParser(inputStream);
while(parser.peek() != JsonToken.START_ARRAY){
   ...do something with the current token...
}

我见过杰克逊的代码示例使用nextToken()方法处理上述情况,遗憾的是,该方法也会在流中向前移动光标。

杰克逊可以开箱即用peek(),或者可以通过其他方法实现吗?

NB。对其他图书馆不感兴趣,所以请不要“图书馆x做所有这一切和厨房水槽”类型的答案。

1 个答案:

答案 0 :(得分:5)

不,目前没有这样的功能。你可以通过使用委托包装器来做到这一点?有'org.codehaus.jackson.util.JsonParserDelegate'可以使它相对容易实现,具体取决于你想保留哪些关于当前元素的信息。

无论价值多少,都有可能添加JsonParser.peek();请求此方法的最佳方式是在http://jira.codehaus.org/browse/JACKSON处提交功能请求。很可能这个功能还没有被任何人要求。

这可能很容易(足够)实现的原因是它应该只需要单个字符预测。