Come fare peek () a Jackson JSON biblioteca?
Domanda
Sto utilizzando il Streaming API JsonParser di Jackson biblioteca per fare un po 'jSON personalizzato di analisi in Java.
C'è un modo per raggiungere una funzionalità simile a un metodo peek()
, in cui viene restituito il token successivo, ma la posizione del cursore non viene spostato in avanti?
Il caso d'uso per questo è simile al seguente:
JsonParser parser = new JsonFactory().createParser(inputStream);
while(parser.peek() != JsonToken.START_ARRAY){
...do something with the current token...
}
Gli esempi di codice che ho visto per Jackson usano il metodo nextToken()
per il caso di cui sopra, che purtroppo si muove anche il cursore in avanti nel flusso.
È possibile peek()
con Jackson out-of-the-box, o forse ottenibile con un metodo aggiuntivo?
NB. Non sono interessato in altre biblioteche, in modo che nessun " biblioteca x fa tutto questo e il lavello della cucina " tipo risposte piacimento.
Soluzione
No, attualmente non v'è tale funzionalità. Si potrebbe forse fare che utilizzando un involucro delegare? C'è 'org.codehaus.jackson.util.JsonParserDelegate' che potrebbe rendere relativamente facile da implementare, a seconda di quali informazioni si desidera conservare su dell'elemento corrente.
Per quel che vale la pena, potrebbe anche essere possibile ottenere JsonParser.peek () aggiunto; miglior modo per richiesta sarebbe quello di presentare una richiesta di funzionalità a http://jira.codehaus.org/browse/ JACKSON . Molto probabilmente questa caratteristica non è stato richiesto da nessuno ancora.
La ragione questo potrebbe essere facile (sufficiente) per implementare è che dovrebbe richiedere solo un singolo carattere look-ahead.