2012-01-05 5 views
0

J'essaie ce code, mais ne fonctionne pasJavaBeans désérialisation objets avec gson

public class Main { 
    public static void main(String[] args) { list();} 

    private static void list() { 

     Gson gson = new Gson();  
     String result = "[{\"Person\":{\"id\":\"1\",\"name\":\"Prédio I\"}},{\"Person\":{\"id\":\"2\",\"name\":\"Prédio II\"}}]"; 
     Person[] persons = gson.fromJson(result, Person[].class); 
     System.out.println("Qtde: " + persons.length); 
     for (Person pe : persons) { 
      System.out.println("Name: " + pe.getName()); 
     } 
    } 

} 

voir que ce code prend un tableau des personnes, mais pas les œuvres, doivent me montrer javabens objets

+0

Avez-vous un message d'erreur? – Taryn

Répondre

0

I » Je devine que le problème consiste à lier correctement la structure JSON à une structure de données Java correspondante. Notez que chaque composant dans le tableau JSON est un objet qui a une seule propriété, appelée "Personne", qui est un objet avec deux propriétés, nommé "id" et "nom" - chaque composant dans le tableau JSON n'est pas simple Objet Person, mais un objet wrapper Person.

Voici une démonstration de la liaison du JSON à une structure de données Java correspondante.

import com.google.gson.Gson; 

public class GsonFoo 
{ 
    public static void main(String[] args) 
    { 
    // [{"Person":{"id":"1","name":"Prédio I"}},{"Person":{"id":"2","name":"Prédio II"}}] 
    String jsonInput = "[{\"Person\":{\"id\":\"1\",\"name\":\"Prédio I\"}},{\"Person\":{\"id\":\"2\",\"name\":\"Prédio II\"}}]"; 

    PersonWrapper[] persons = new Gson().fromJson(jsonInput, PersonWrapper[].class); 
    System.out.println("Qtde: " + persons.length); 
    for (PersonWrapper pw : persons) 
    { 
     System.out.println("Name: " + pw.Person.name); 
    } 

    // output: 
    // Qtde: 2 
    // Name: Prédio I 
    // Name: Prédio II 
    } 
} 

class PersonWrapper 
{ 
    Person Person; 
} 

class Person 
{ 
    int id; 
    String name; 
} 
Questions connexes