2010-06-24 65 views
3

我正在使用Jackson庫的Streaming API JsonParser在java中執行一些自定義json解析。如何在Jackson json庫中執行peek()?

有沒有辦法實現類似於peek()方法的功能,其中下一個標記被返回但光標位置沒有向前移動?

的使用情況,這是類似於以下:

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

的代碼示例我已經看到了傑克遜使用nextToken()方法上述情況下,不幸的是還流中向前移動光標。

peek()可能與傑克遜開箱即用,或者可能實現一個額外的方法?

注意:對其他圖書館不感興趣,所以沒有「圖書館x所有這一切和廚房水槽」類型的答案請。

回答

5

不,目前沒有這樣的功能。你也許可以通過使用委託包裝來做到這一點?有'org.codehaus.jackson.util.JsonParserDelegate'這可以使它相對容易實現,這取決於你想保留的關於當前元素的信息。

無論它值什麼,它都可能獲得JsonParser.peek()添加;請求的最佳方式是在http://jira.codehaus.org/browse/JACKSON處提交功能請求。任何人都沒有要求這個功能。

這可能很容易(足夠)實施的原因是,它應該只需要一個字符前瞻。

+1

其實,想一想,不,它不會很容易添加。由於分隔符(逗號,冒號),簡單的預見功能將不起作用。所以添加它可能不是很容易。 – StaxMan 2010-07-01 07:08:04

+1

請參閱http://jira.codehaus.org/browse/JACKSON-315,因爲不會修復而關閉。 – eskatos 2013-01-03 18:22:34