2010-12-15 3 views
24

Je dois interagir avec une API, et le format de réponse (d'après ce que j'ai lu) semble être mal structuré. J'ai trouvé un groupe de google répondre à un problème similaire here, mais j'ai du mal à implémenter une classe Response pour gérer le Gson.fromJson. Y a-t-il un exemple qui me manque?Java - L'analyse syntaxique GSS imbriquée dans les imbriqués

{ 

"response":{ 
    "reference": 1023, 
    "data":{ 
     "user":{ 
      "id":"210", 
      "firstName":"john", 
      "lastName":"smith", 
      "email":"[email protected]", 
      "phone":"", 
      "linkedid":{ 
       "id":"238" 
      } 
     } 
    } 
} 

} 

Répondre

44

Les objets JSON {} peut être représenté par un Map<String, Object> ou une classe Javabean. Voici un exemple qui utilise un Javabean.

public class ResponseData { 
    private Response response; 
    // +getter+setter 

    public static class Response { 
     private int reference; 
     private Data data; 
     // +getters+setters 
    } 

    public static class Data { 
     private User user; 
     // +getter+setter 
    } 

    public static class User { 
     private String id; 
     private String firstName; 
     private String lastName; 
     private String email; 
     private String phone; 
     private Linkedid linkedid; 
     // +getters+setters 
    } 

    public static class Linkedid { 
     private String id; 
     // +getter+setter 
    } 
} 

Utilisez-le comme suit:

ResponseData responseData = new Gson().fromJson(json, ResponseData.class); 
+0

Pourquoi GSON nécessite classe interne? – Chetan

+1

@Chetan: Ce n'est pas une exigence GSON. – BalusC

+2

Lorsque j'essaie d'imprimer ceux-ci, j'obtiens une exception de pointeur nul. –