2010-03-23 9 views
9

So che Android ha un parser JSON in dotazione ma mi chiedevo se valesse la pena usare qualcosa che offrisse prestazioni migliori (come Jackson - vedi http://jackson.codehaus.org/)? Qualcuno l'ha provato?Sostituisci il parser JSON Android standard per prestazioni migliori?

+0

non ho mai avuto problemi con la velocità di JSON parser di Android. Ho persino ottenuto un file JSON a 41kb in una delle mie app, e si carica in un paio di millisecondi su un G1 (che va bene, dato che deve essere eseguito una volta sola all'avvio dell'applicazione). –

+0

La velocità di conversazione assoluta potrebbe essere accettabile. È sempre bene considerare che su normali CPU desktop, la velocità di analisi JSON è dell'ordine di decine di meg - il file di 41 kb dovrebbe essere fatto in millisecondi o giù di lì.Anche dati le CPU più lente che il sistema Android ha spesso, un centinaio di millisecondi è piuttosto lento, rispetto alle alternative veloci. Quindi, strumento giusto per il lavoro. Per uso occasionale (come leggere i file di configurazione all'avvio) i gestori interni di solito sono decenti. È ancora bene sapere che c'è spazio per miglioramenti se i casi d'uso lo richiedono. – StaxMan

risposta

7

Bene, ecco uno couple di links confrontando le prestazioni di Jackson JSON con JSON, SAX e Protocol Buffers esistenti. Secondo l'autore, Jackson è più veloce di SAX o del JSON integrato e circa alla pari con i Protocol Buffers. Quest'ultima parte sembra un po 'sospettosa, ma, a prescindere, sembra che Jackson lavori su Android e potrebbe valere la pena di sperimentare.

Non ho ancora controllato la dimensione del JAR. Se è enorme, a meno che non stia morendo per prestazioni JSON extra, potrebbe non valerne la pena.

+0

Sì, la dimensione del file è sicuramente nella mia lista di possibili vincoli. Immagino che se stessi masticando un sacco di JSON nella mia app, potrebbe valere la pena aggiungere Jackson, ma per ora rimango fedele al JSON standard. – Eno

4

risposta tardiva ma potrebbe ancora aiutare. Sto usando Jackson per analizzare JSON da Twitter e persistere Maps nel database. La mappatura dei dati in Jackson è semplicemente meravigliosa. Essere in grado di mappare JSON direttamente su un oggetto è fantastico e rende tutto molto più pulito.

Anche se si stanno solo analizzando risposte semplici, la mappatura dei dati può aiutare a rendere il codice più pulito (e più efficiente). Per me è una manna dal cielo che non devo scrivere la logica di analisi per ogni tipo di funzione API di Twitter.

+0

Grazie per questo feedback: è bello avere un altro strumento nel torace, se necessario. – Eno

0

Solo un'altra prospettiva su questi parser. Stavo guardando l'IO di Google per il 2009 e si parla molto bene dell'uso efficiente della batteria per gli sviluppatori di app.

Ecco il link a quel discorso: link

Ora come per il discorso Parson integrato per Android è basato albero e questi sono supposti di essere inefficiente quando si tratta di durata della batteria. Qualcuno ha davvero guardato in questo.

Leggendo questa discussione sembra che il parser di Jackson sembra essere un vincitore in tutto. È quasi altrettanto veloce se non più di quello integrato e anche il suo Event/Stream basato su contrapposto a tree based che è migliore in termini di utilizzo della batteria.

Solo un po 'ho voluto condividere e avere alcune opinioni su questo.

0

Uso jackson json per implementare la mia applicazione Android che comunica con il server tramite json-rpc. Mi piacerebbe usarlo per serializzare/deserializzare richieste e risposte json-rpc e oggetti per trasferire i dati. Uso la versione 2.0 di Jackson-json. Ho inserito nel mio percorso di build due jar: jackson-databind-2.0.0.jar, jackson-core-2.0.0.jar e jackson-annotations-2.0.0.jar.

Sulla nota a margine: Esiste un'implementazione json-rpc per l'androide. json-rpc separato e il traffico http sarebbero buoni. Ho cercato molto su google, bu non ho trovato un buon generatore json-rpc, json serializzatore/deserializzatore e per il trasporto andrò con android-query.

Problemi correlati