【发布时间】:2017-09-27 09:39:19
【问题描述】:
我正在尝试通过 Boon Json 序列化和反序列化一个简单的Map <Resistance, Double> map = new HashMap(),其中Resistance 是一个仅由两个枚举实现的接口。
public interface Resistance {}
public enum Condition implements Resistance{
BURN, SLEEP, PARALYZED, CONFUSE;
}
public enum Element implements Resistance{
FIRE, ICE, EARTH, AIR;
}
添加一些值后,序列化似乎工作正常:
map.put(Element.FIRE, 1.1);
map.put(Condition.BURN, 0.2);
System.out.println("Fire resistance: " + map.get(Element.FIRE));
System.out.println("Burn resistance: " + map.map.get(Condition.BUR));
ObjectMapper mapper = JsonFactory.create();
String dst = mapper.toJson(manager);
System.out.println(dst);
输出:
Fire resistance: 1.1
Burn resistance: 0.2
{"map":{"FIRE":1.1,"BURNED":0.2}}
问题发生在反序列化过程中,(我认为)解析器无法将枚举器与其类相关联。所以我得到:
map = mapper.readValue(dst, map.getClass()) ;
System.out.println("Fire resistance: " + manager.get(Element.FIRE));
System.out.println("Burn resistance: " + manager.get(Condition.BURN));
输出:
Fire resistance: null
Burn resistance: null
{"map":{"":0.2}}
我该如何解决这个问题?
【问题讨论】: