4

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

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

其用例类似于以下内容:

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

我为 Jackson 看到的代码示例使用nextToken()了上述情况的方法,不幸的是,它也在流中向前移动了光标。

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

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

4

1 回答 1

5

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

不管它值多少钱,都可以添加 JsonParser.peek() ;提出此请求的最佳方法是在http://jira.codehaus.org/browse/JACKSON提交功能请求。很可能尚未有人请求此功能。

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

于 2010-06-28T22:59:54.853 回答