こんにちは、次のようなダブル取得データの代わりにintを使用するようにgsonを構成できますか?
{fn: chat, data: {roomId: 1, text: "Some brabble"}}
次のように逆シリアル化するPacketClassを取得しました。
public class DataPacket {
private String fn;
private Object p; // will be a StringMap
}
次のようにデコードします。
DataPacket pkg = gson.fromJson(message, DataPacket.class);
タイプ処理を改善するために、DataPacket.pフィールドのデータpojoを取得しました。例:
public class ChatPacket {
public int roomId;
public String message;
public String from;
// getter & setter
}
データをパケットに解析するには、次のようなBeanMapsを使用します(エラー処理などを削除しました)。
public Object getData(Class<?> pojoClass) {
pojo = pojoClass.newInstance();
BeanMap b = new BeanMap();
b.setBean(pojo);
b.putAll(this.p);
pojo = b.getBean();
}
問題は、gsonがroomIdをStringMapで1からdouble 1.0にし、beanmapがそれを整数に解析しようとしてNumberFormatExceptionをスローすることです。これを修正する方法を知っている人はいますか?
ありがとう!