2016-07-18 3 views
0

Gson을 사용하여 JSON 응답을 아래의 모델 클래스로 구문 분석하는 방법이 있습니까?Gson을 사용하여 동적 객체를 JSONObject로 구문 분석하는 방법

{ 
    "id": 123, 
    "phone": "123456789", 
    "config": { 
        "dynamicKey1": "true", 
        "dynamicKey2": "123" 
    } 
} 

모델 클래스 다음 config 객체에

public class User { 
    int id; 
    String phone; 
    JSONObject config; 
} 

키가 존재하거나 존재하지 않을 수도 있습니다. 은 직렬화 후, 나는 내가 대신 org.json.JSONObjectcom.google.gson.JsonObject을 사용하는 것이었다하고 결국 무엇 user.getConfig().optBoolean("dynamicKey1")

답변

0

처럼 동적으로 뭔가를 사용하여 설정 키를 쿼리 할 수 ​​있어야합니다. GSON에서 JsonObject를 사용하여 직렬화가 완벽하게 작동하고, 동적 키를 액세스하는 다음과 같습니다

user.getConfig().getAsJsonPrimitive("dynamicKey1").getAsBoolean() 
0

사용자 구성 :

public class User { 

int id; 
String phone; 
Map<String, String> config; 
public int getId() { 
    return id; 
} 
public void setId(int id) { 
    this.id = id; 
} 
public String getPhone() { 
    return phone; 
} 
public void setPhone(String phone) { 
    this.phone = phone; 
} 
public Map<String, String> getConfig() { 
    return config; 
} 
public void setConfig(Map<String, String> config) { 
    this.config = config; 
} 

} 

메인 클래스 :

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    String input = "{\"id\": 123,\"phone\": \"123456789\",\"config\": {\"dynamicKey1\": \"true\",\"dynamicKey2\": \"123\"}}"; 

    Gson gsonInstance = null; 

    gsonInstance = new GsonBuilder().create(); 

    User user = gsonInstance.fromJson(input, User.class); 

    boolean value = Boolean.parseBoolean(user.getConfig().get("dynamicKey1")); 
    System.out.println(value); 
} 

당신은을 만들 수 있습니다 이 방법으로 구성 섹션의 DynamicKeys 맵을 찾은 다음 필요할 때마다 각각의 기본 유형으로 변환하십시오.

희망이 있습니다.