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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top