我有一個簡單的JSON結構等:Gson不能反序列化繼承類嗎?
{"MessageType":"TimeData","TimeData":{"hh":12,"mm":13,"ms":15,"ss":14}}
和我設計的下列類來反序列化:
public class JsonMessage
{
public enum MessageTypes{
WhoAreYou,
TimeData
}
JsonMessage(){
}
public MessageTypes MessageType;
}
class TimeData extends JsonMessage{
int hh;
int mm;
int ss;
int ms;
TimeData() {
}
}
我需要反序列化分成絲束階段:
1-反序列化以讀取MessageType
。
2-繼續進行反序列化的基礎上,MessageType
其餘部分的代碼很簡單:
public void dispatch(Object message, IoSession session)
{
Gson gson = new Gson();
JsonMessage result = gson.fromJson(message.toString(), JsonMessage.class);
System.out.println(result.MessageType.toString());
switch (result.MessageType)
{
case WhoAreYou:{
//.....
break;
}
case TimeUpdate:
TimeData res = new Gson().fromJson(message.toString(), TimeData.class);
System.out.println(res.hh);
break;
default:break;
}
}
我的計劃可以輸入正確的switch-case
(這是TimeUpdate
),但它並不解析它正確(println打印0而不是12)
你認爲我在哪裏做錯了什麼? 謝謝
你可以去看一下[http://stackoverflow.com/a/22081826/3315914]( http://stackoverflow.com/a/22081826/3315914)。我在那裏回答了類似的問題。 – rpax 2014-02-28 08:05:09