嗨,我可以将 gson 配置为他使用 int 而不是 double 得到的数据,例如:
{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 在 StringMap 中将 roomId: 1 设置为双 1.0 并且 beanmap 尝试将其解析为整数并抛出 NumberFormatException,有人知道如何解决这个问题吗?
谢谢你!