2011-01-03 9 views
10

¿Existe una forma fácil de asignar datos de JSON a campos de mi clase mediante las API de Android?Clase JSON a Java

JSON:

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

Mi clase:

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

Aquí hay un ejemplo: http://goo.gl/BsuaM –

Respuesta

7

Utilice org.json -Paquete.

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

También es parte del tiempo de ejecución de Android, por lo que no necesita ningún paquete externo.

+4

Está incluido de hecho, pero no mapea exactamente los datos. Analiza/escribe JSON y ofrece una API simple basada en nodo. Pero es tu código el que hace el mapeo aquí. – StaxMan

+1

Lo hago haciendo un constructor en las credenciales con los campos para poder hacer el mismo código en 2 líneas. JSONObject x = new JSONObject (jsonString); Credenciales c = nuevas credenciales (x.getString ("email"), x.getString ("contraseña")); – JPM

7

Usted podría utilizar GSON.

+2

tenga en cuenta este problema con los teléfonos HTC: http://sites.google.com/site/gson/gson-on-android –

0

supongo que tiene más de una credencial u desea obtener ...

con el paquete org.json se puede utilizar un JSONArray para obtener varios valores al mismo tiempo fuera de un archivo JSON.

13

Use Jackson. Mucho más conveniente (y si los asuntos de rendimiento, más rápido) que el uso de clases org.json paquetes y código personalizado:

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

(Ten en cuenta que los campos de credenciales deben ser 'público' de ser descubierto, o necesita tener métodos setter)