我正在尝试使用Jackson将JSON反序列化为Java POJO。在不泄露机密信息的情况下,这是ObjectMapper的反序列化失败时的示例堆栈跟踪:
org.codehaus.jackson.map.JsonMappingException: Can not construct Map key of type com.example.MyEnum from String "coins": not a valid representation: Can not construct Map key of type com.example.MyEnum from String "coins": not one of values for Enum class
我的JSON看起来像这样:
"foo": {
"coins": null,
...
}
我想反序列化的类具有以下字段:
private Map<MyEnum, MyPojo> foo;
我的枚举类型如下所示:
public enum MyEnum {
COINS("coins"),
...
}
我确实意识到我正在尝试反序列化null值。但是我认为这仍然应该起作用:反序列化的结果应该等同于使用Map with foo.put(MyEnum.COINS, null)
,这确实是有效的Java指令。非常感谢您的帮助,在此先感谢您。
除了提供一种好的解决方案(工厂方法)外,还有两种其他方法:
ObjectMapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING)
@JsonValue
注释标记该方法(实际上您也可以在其上使用它toString()
,而不是启用上述功能)-如果该注释存在,则将该方法返回的值用作ID。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句