對含有自定義類的的類的反序列化

 

參考https://www.cnblogs.com/insaneXs/p/9515803.html

在反序列化含有自定義枚舉類的類時,自定義枚舉類的屬性反序列化失敗,

具體體現爲得到枚舉類的屬性值時爲null

解決方法:

1 添加自定義的編解碼器:

	publicclassEventTypeCodeimplementsObjectSerializer,ObjectDeserializer{
	//反序列化過程
		@Override
		public<T> Tdeserialze(DefaultJSONParserdefaultJSONParser,Typetype,Objecto){
			System.out.println("hellohahahahahahah");
			Objectvalue=defaultJSONParser.parse();
			returnvalue==null?null:(T)EventType.convert(TypeUtils.castToInt(value));
		}
		
		@Override
		publicintgetFastMatchToken(){
			return0;
		}
		
		//序列化
		@Override
		publicvoidwrite(JSONSerializerjsonSerializer,Objecto,Objecto1,Typetype,inti)throwsIOException{
			jsonSerializer.write(((EventType)o).getValue());
		}
	}

2、修改EventModel類

public class EventModel {

    @JSONField(serializeUsing = EventTypeCode.class, deserializeUsing = EventTypeCode.class)
    private EventType eventType;  //行爲

    private int actorId;  //操作者
    private int entityType;  //對象 類型 id
    private int entityId;
    private int entityOwnerId; //對象相關者

    private Map<String, String> exts = new HashMap<String, String>();

    public EventModel setExt(String key, String value){
        exts.put(key, value);
        return this;
    }

    public EventModel(EventType type){
        this.eventType = type;
    }

    public String getExts(String key){
        return exts.get(key);
    }

    public EventType getEventType() {
        return eventType;
    }
    public EventModel(){

    }
    public void setEventType(EventType eventType) {
        this.eventType = eventType;
    }

    public int getActorId() {
        return actorId;
    }

    public EventModel setActorId(int actorId) {
        this.actorId = actorId;
        return this;
    }

    public int getEntityType() {
        return entityType;
    }

    public EventModel setEntityType(int entityType) {
        this.entityType = entityType;
        return this;
    }

    public int getEntityId() {
        return entityId;
    }

    public EventModel setEntityId(int entityId) {
        this.entityId = entityId;
        return this;
    }

    public int getEntityOwnerId() {
        return entityOwnerId;
    }

    public EventModel setEntityOwnerId(int entityOwnerId) {
        this.entityOwnerId = entityOwnerId;
        return this;
    }
}

這樣就可以解決

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章