Comment faire peek () dans la bibliothèque de Jackson?
Question
J'utilise le streaming API JsonParser de Jackson la bibliothèque pour faire un peu JSON personnalisé d'analyse syntaxique java.
Est-il possible d'obtenir une fonctionnalité similaire à une méthode de peek()
, où le prochain jeton est retourné, mais la position du curseur est pas avancé?
Le cas d'utilisation pour ce qui est similaire à ce qui suit:
JsonParser parser = new JsonFactory().createParser(inputStream);
while(parser.peek() != JsonToken.START_ARRAY){
...do something with the current token...
}
Les exemples de code que je l'ai vu pour Jackson utiliser la méthode nextToken()
pour le cas ci-dessus, qui se déplace malheureusement aussi le curseur vers l'avant dans le flux.
est peek()
possible avec Jackson out-of-the-box, ou peut-être réalisable avec une méthode supplémentaire?
NB. pas intéressé par d'autres bibliothèques, donc pas de « bibliothèque x que tout cela et l'évier de cuisine » répond Viseus.
La solution
Non, actuellement il n'y a pas une telle fonctionnalité. Vous pourriez peut-être faire en utilisant une enveloppe de déléguer? Il est « org.codehaus.jackson.util.JsonParserDelegate » qui pourrait faire pour mettre en œuvre relativement facile, selon les informations que vous souhaitez conserver à propos de l'élément courant.
Pour tout ce qu'il vaut la peine, il pourrait bien être possible d'obtenir JsonParser.peek () ajouté; meilleure façon de demander ce serait de déposer une demande de fonctionnalité http://jira.codehaus.org/browse/ JACKSON. Très probablement cette fonctionnalité n'a pas été demandée par personne pour le moment.
La raison cela pourrait être facile (assez) pour mettre en œuvre est qu'il ne devrait exiger qu'un seul caractère d'anticipation.