对象映射器无法序列化对象类的引用

时间:2019-11-18 12:42:32

标签: java jackson

我有一个Notification类:

package com.code2hack.notification;

public class Notification {
    private Object message;
    private NotificationType type;

    public static Notification create(NotificationType type,Object message){
        return new Notification(message,type);
    }

    public Notification(){

    }
    public Notification(Object message,NotificationType type){
        this.message = message;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Notification{" +
                "message=" + message +
                ", type=" + type +
                '}';
    }

    public <T> T getMessage(Class<T> type){
        return (T)this.message;
    }
    public NotificationType getType(){
        return this.type;
    }
    public void setType(NotificationType type){
        this.type = type;
    }
    public void setMessage(Object message){
        this.message = message;
    }
}

从春季开始使用ObjectMapper时,它不会将消息字段转换为Json。

public static void main(String ...str){
   ObjectMapper mapper = new ObjectMapper();
   String json = mapper.writeValueAsString(Notification.create(NotificationType.NEW_SCHEDULE,"NEW Schedule"));
   System.out.println(json);
}

这不会将Notification中的消息属性转换为json。

我能做些什么吗?

1 个答案:

答案 0 :(得分:1)

因为您没有在班级中使用getters,所以除非您向他指定jackson是json的一部分,否则message不会打印它。

@JsonProperty
private Object message;

那应该做的