GSON-JSONに少し問題があります。
次のコードを見てみましょう。
public static class ProtoQuery {
public String action;
public String token;
public Object params;
public ProtoQuery(String action, String token, Object params) {
this.action = action;
this.token = token;
this.params = params;
}
}
// Authentication Phase
public static class ProtoAuth {
public String username;
public String password;
public ProtoAuth(String username, String password) {
this.username = username;
this.password = password;
}
}
// Serialize Object
Gson gson = new Gson();
ProtoQuery tmp = new ProtoQuery("ProtoAuth", "", new JirckeProtocol.ProtoAuth("ABC", "myPASS"));
String json = gson.toJson(tmp);
// Deserialize Object
ProtoQuery deserializedOBJ = gson.fromJson(json, ProtoQuery.class);
ここで問題があります:deserializedOBJ.objectはLinkedHashMapを返します。ProtoAuthオブジェクトに変換し直したいのですが、それがProtoAuthであることをどうやって知ることができますか?ProtoQueryで「アクション」パラメータを使用します。
deserializedOBJ.params = gson.fromJSON(json.object、ProtoAuth.class)のようなものが必要です
これを行うための最良の方法は何ですか?独自のシリアライザー/デシリアライザーを作成せずに、これを行うための代替手段はありますか?
実際に私はそのコードを使用します:
deserializedOBJ.params = gson.fromJson(element, Class.forName("MyProtocol$ProtoAuth"));