2016-07-18 7 views
0

Gsonを使用してJSONレスポンスを以下のモデルクラスに解析する方法はありますか?Gsonを使用して動的オブジェクトをJSONObjectにパースする方法

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

モデルクラス:

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

configオブジェクト内のキーは、または存在してもしなくてもよいです。 は、逆シリアル化した後、私は動的に私がやってしまったことはcom.google.gson.JsonObjectの代わりorg.json.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); 
} 

あなたは作成することができますこの方法でConfigキーのDynamicKeysのマップを作成し、必要に応じてそれぞれのプリミティブ型に変換します。

希望します。

関連する問題