fastjson的EnumDeserializer优化

watbbzwu  于 2021-11-27  发布在  Java
关注(0)|答案(1)|浏览(175)

Map<String, Object> map= new HashMap<>(); map.put("enumField","0"); AbstractBean bean= JSON.parseObject(JSON.toJSONString(map), ConcreteBean.class);
public enum FieldEnum { A, B }
fastjson不支持使用enum ordinal方法解析enum字段吗?
我debug了1.2.45的release发现parseObject该字段时候用DefaultFieldDeserializer初始化时候并没有判断enum。除非使用@JSONField指定某个EnumDeserializer的子类,能否根据field的class自动class forName获取?

0ejtzxu1

0ejtzxu11#

public void test_for_issue() throws Exception {
    Map<String, Object> map= new HashMap<String, Object>();
    map.put("enumField", 0);

    AbstractBean bean = JSON.parseObject(JSON.toJSONString(map), ConcreteBean.class);
    assertEquals(FieldEnum.A, bean.enumField);
}

public static class AbstractBean {
    public FieldEnum enumField;
}

public static class ConcreteBean extends AbstractBean {

}

public static enum FieldEnum { A, B }

支持ordinal,但是你传入的必须是数值,而不是字符串

相关问题