2011-03-15 13 views
16

estoy tratando de cargar mi JSON en mi claseJSON GSON.fromJson Objetos Java

public User() { 
    this.fbId = 0; 
    this.email = ""; 
    this.name = ""; 
    this.thumb = ""; 
    this.gender = ""; 
    this.location = ""; 
    this.relationship = null; 
    this.friends = new ArrayList(); 
} 
{ 
    users:{ 
     user:{ 
      name:'the name', 
      email:'[email protected]', 
      friends:{ 
       user:{ 
        name:'another name', 
        email:'[email protected]', 
        friends:{ 
         user:{ 
          name:'yet another name', 
          email:'[email protected]' 
         } 
        } 
       } 
      } 
     } 
    } 
} 

estoy luchando para conseguir GSON para cargar los datos de usuario en el anterior objeto Java con el código siguiente

User user = gson.fromJson(this.json, User.class); 
+5

Eso es XML, JSON no, amigo. ... bien, editaste tu pregunta. ¡Muéstranos el JSON! _Asimismo_, eso es un constructor, no una clase. –

+0

disculpa tener una pesadilla con la sección de código lol – Deviland

+0

Lee http://stackoverflow.com/editing-help. Es solo Markdown. –

Respuesta

29

El JSON no es válido. Una colección no debe ser representada por {}. Representa un objeto . Una colección/matriz debe ser representada por [] con objetos separados por comas.

Así es como el JSON debe verse como:

{ 
    users:[{ 
     name: "name1", 
     email: "email1", 
     friends:[{ 
      name: "name2", 
      email: "email2", 
      friends:[{ 
       name: "name3", 
       email: "email3" 
      }, 
      { 
       name: "name4", 
       email: "email4" 
      }] 
     }] 
    }] 
} 

(tenga en cuenta que añadí un amigo más al amigo anidada más profundo, para que pueda entender cómo especificar varios objetos en una colección)

Dada esta JSON, su clase de contenedor debe tener este aspecto:

public class Data { 
    private List<User> users; 
    // +getters/setters 
} 

public class User { 
    private String name; 
    private String email; 
    private List<User> friends; 
    // +getters/setters 
} 

y luego convertirlo, utilizar

Data data = gson.fromJson(this.json, Data.class); 

y para obtener los usuarios, el uso

List<User> users = data.getUsers(); 
+0

Gracias Balus C usaste una herramienta para convertir mis datos de prueba de XML a JSON esto es una lección que debo aprender no confía en sitios de terceros para hacer el trabajo que debería estar haciendo. – Deviland

+0

Hola todo el mundo lo usó en la solución: gson.fromJson (this.json, User.class); Quiero saber qué es this.json. ¿Es un objeto json o qué? si se trata de un objeto json codificado, ¿dónde deberíamos crear ese objeto para acceder a él con this.json? – Piscean

+1

@Piscean: es solo la cadena JSON de entrada. Ver también la pregunta original y el manual de Gson. Si no puede resolverlo, simplemente presione el botón 'Ask Question' en la parte superior derecha. – BalusC