2011-01-03 26 views
10

C'è un modo semplice per mappare i dati da JSON ai campi della mia classe per mezzo di API di Android?JSON per classe Java

JSON:

{ email: 'email', password: 'pass' } 

La mia classe:

class Credentials 
{ 
    string email; 
    string password; 
} 
+0

Ecco un esempio: http://goo.gl/BsuaM –

risposta

7

Utilizzare il org.json -Il pacchetto.

JSONObject x = new JSONObject(jsonString); 
Credentials c = new Credentials(); 
c.email = x.getString("email"); 
c.password = x.getString("password"); 

Fa parte anche del runtime di Android, quindi non è necessario alcun pacchetto esterno.

+4

È incluso in effetti, ma non mappa esattamente i dati. Analizza/scrive JSON e offre una semplice API basata su nodo. Ma è il tuo codice che fa la mappatura qui. – StaxMan

+1

lo faccio facendo un costruttore nelle credenziali con i campi in modo che possa fare lo stesso codice in 2 righe invece. JSONObject x = new JSONObject (jsonString); Credenziali c = nuove credenziali (x.getString ("email"), x.getString ("password")); – JPM

7

Si potrebbe usare GSON.

+2

essere a conoscenza di questo problema con i telefoni HTC: http://sites.google.com/site/gson/gson-on-android –

0

Suppongo che tu abbia più di una credenziale u vuole ottenere ...

con il pacchetto org.json si potrebbe usare un JSONArray per ottenere diversi valori allo stesso tempo di un file JSON.

13

Usa Jackson. Molto più conveniente (e se la performance è, più veloce) rispetto all'utilizzo di classi org.json in bundle e codice personalizzato:

Credentials c = new ObjectMapper().readValue(jsonString, Credentials.class); 

(basta notare che i campi delle credenziali devono essere 'pubblico' da scoprire, o bisogno di avere metodi setter)