ExceptionEntity
何か問題が発生した場合に、結果としてシリアル化されたクラスを返す REST サービスを作成しました。
Gson.fromJson()
逆シリアル化する必要があるjsonの型が異なる場合、例外をスローしたいと思います。たとえば、逆シリアル化する必要がある次の文字列があります (my.ExceptionEntity.class):
{"exceptionId":2,"message":"Room aaaa already exists."}
ただしRoom
、このシリアル化された文字列の型としてクラスを使用します。
String json = "{\"exceptionId\":2,\"message\":\"Room aaaa already exists.\"}";
Room r = gson.fromJson(json, Room.class);
// as a result r==null but I want to throw Exception; how?
[編集] 私はこれをテストしましたが、動作しません:
try {
return g.fromJson(roomJson, new TypeToken<Room>(){}.getType());
// this also doesn't work
// return g.fromJson(roomJson, Room.class);
} catch (JsonSyntaxException e) {
pepuch.multiplayergame.entity.Exception ex = g.fromJson(roomJson, pepuch.multiplayergame.entity.Exception.class);
throw ExceptionController.toGameServerException(ex);
} catch (JsonParseException e) {
pepuch.multiplayergame.entity.Exception ex = g.fromJson(roomJson, pepuch.multiplayergame.entity.Exception.class);
throw ExceptionController.toGameServerException(ex);
}