我正在使用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做所有这一切和厨房水槽”类型的答案。
答案 0 :(得分:5)
不,目前没有这样的功能。你可以通过使用委托包装器来做到这一点?有'org.codehaus.jackson.util.JsonParserDelegate'可以使它相对容易实现,具体取决于你想保留哪些关于当前元素的信息。
无论价值多少,都有可能添加JsonParser.peek();请求此方法的最佳方式是在http://jira.codehaus.org/browse/JACKSON处提交功能请求。很可能这个功能还没有被任何人要求。
这可能很容易(足够)实现的原因是它应该只需要单个字符预测。