Как сделать peek () в библиотеке Джексона JSON? - PullRequest
3 голосов
/ 24 июня 2010

Я использую Streaming API JsonParser из библиотеки Jackson , чтобы выполнить некоторый пользовательский анализ json в java.

Есть ли способ достижения функциональности, аналогичный методу peek(), при котором возвращается следующий токен, но позиция курсора не перемещается вперед?

Вариант использования для этого аналогичен следующему:

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

Примеры кода, которые я видел для Джексона, используют метод nextToken() для вышеуказанного случая, который, к сожалению, также перемещает курсор вперед в потоке.

Возможно ли peek() с Джексоном "из коробки" или возможно с помощью дополнительного метода?

NB. не заинтересован в других библиотеках, так что ни один " library x не делает все это и кухонная раковина ", пожалуйста, отвечайте.

1 Ответ

5 голосов
/ 29 июня 2010

Нет, в настоящее время такой функциональности нет.Возможно, вы могли бы сделать это, используя делегирующую оболочку?Существует «org.codehaus.jackson.util.JsonParserDelegate», который может сделать его относительно простым для реализации, в зависимости от того, какую информацию вы хотите сохранить о текущем элементе.

Для чего бы это ни стоило, это вполне может бытьвозможно добавить JsonParser.peek ();лучший способ запросить это - подать запрос функции на http://jira.codehaus.org/browse/JACKSON. Скорее всего, эта функция еще ни кем не была запрошена.

Причина, по которой это может быть легко (достаточно) реализовать, заключается в том, чтоон должен требовать только одного символа.

...