• Jackson 实现多态反序列化


    @Getter
    @Setter
    @ToString
    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
            include = JsonTypeInfo.As.EXISTING_PROPERTY,
            property = "msgId",
            defaultImpl = Msg.class,
            visible = true)
    @JsonSubTypes({
            @JsonSubTypes.Type(value = MsgPing.class, name = Msg.RECEIVE_MSG_ID_PING)
    })
    public class Msg {
        public static final String RECEIVE_MSG_ID_PING = "ping";
    
        private static final ObjectMapper objectMapper = JsonMapper.builder()
                .addModules(new JavaTimeModule())
                .configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true).build();
    
        private String msgId;
    
        public static TextMessage toTextMsg(Msg msg) {
            String textMsg = toJson(msg);
            return new TextMessage(textMsg);
        }
    
        public static String toJson(Msg msg) {
            try {
                return objectMapper.writeValueAsString(msg);
            } catch (JsonProcessingException e) {
                log.error("Could not serialize {}", msg, e);
                return "{\"explain\":\"消息序列化失败\",\"msgId\":\"error\"}";
            }
        }
    
        public static Msg fromJson(String json) {
            try {
                return objectMapper.readValue(json, Msg.class);
            } catch (JsonProcessingException e) {
                log.error("Can not deserialization message", e);
                Msg msg = new Msg();
                msg.setMsgId("");
                return msg;
            }
        }
    }
    
  • 相关阅读:
    jsp>EL表达式语言 小强斋
    jsp>JSP + Servlet + JavaBean开发模式 小强斋
    jsp>Smartupload例子代码 小强斋
    jsp>servlet 小强斋
    jsp>JSP + Servlet + JavaBean开发模式 小强斋
    五言诗
    夜深灯下行
    2011 年数据库大会的PPT下载
    去除iPhone icon的光晕效果
    望苍天
  • 原文地址:https://www.cnblogs.com/seliote/p/16441977.html
Copyright © 2020-2023  润新知