2010-12-15 13 views
24

Ich muss mit einer API interagieren, und das Antwortformat (von dem, was ich gelesen habe) scheint schlecht strukturiert zu sein. Ich habe eine Google Groups-Antwort auf ein etwas ähnliches Problem gefunden here, aber ich habe Probleme beim Implementieren einer Antwort-Klasse, um die Gson.fromJson zu behandeln. Gibt es ein Beispiel, das ich vermisse, das da draußen ist?Java - Gson Parsing verschachtelt verschachtelt

{ 

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

} 

Antwort

44

Die JSON-Objekte {} kann durch ein Map<String, Object> oder eine Javabean Klasse dargestellt werden. Hier ist ein Beispiel, das einen Javabean verwendet.

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 
    } 
} 

Verwenden Sie es wie folgt:

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

Warum Gson innere Klasse erfordert? – Chetan

+1

@Chetan: Das ist keine GSON-Anforderung. – BalusC

+2

Wenn ich versuche, diese zu drucken, erhalte ich eine Nullzeiger-Ausnahme. –