2012-09-07 54 views
1

我有一個對象「A」,當對象「A」被序列化時擴展對象「B」,對象「B」中的字段不會被序列化爲JSON。有任何想法嗎?這是我參與的對象。Jersey Jackson序列化父字段

public class CreateNewPlayerAndLoginResponse extends EPNetResponse{ 
    private PlayerSession playerSession; 

    public CreateNewPlayerAndLoginResponse() { 
    } 

    public CreateNewPlayerAndLoginResponse(Integer playerId, String playerSessionId) { 
     this.playerSession = new PlayerSession(playerId, playerSessionId); 
    } 

    public CreateNewPlayerAndLoginResponse(EPNetErrorEnum error) { 
     super(error); 
    } 

    public CreateNewPlayerAndLoginResponse(EPNetError error) { 
     super(error); 
    } 

    public PlayerSession getPlayerSession() { 
     return playerSession; 
    } 

    public void setPlayerSession(PlayerSession playerSession) { 
     this.playerSession = playerSession; 
    } 

    @Override 
    public String toString() { 
     return "CreateNewPlayerAndLoginResponse{" + "playerSession=" + playerSession + '}'; 
    } 

} 

public class EPNetResponse implements Serializable{ 

    private EPNetError error; 

    public EPNetResponse() { 
    } 

    public EPNetResponse(EPNetError error) { 
     this.error = error; 
    } 

    public EPNetResponse(EPNetErrorEnum error){ 
     this.error = new EPNetError(error); 
    } 

    public EPNetError getError() { 
     return error; 
    } 

    public void setError(EPNetError error) { 
     this.error = error; 
    } 

    @JsonIgnore 
    public boolean isError(){ 
     if(error == null){ 
      return false; 
     } 

     return true; 
    } 
} 

public class EPNetError implements Serializable{ 
    private static final int UNEXPECTED_ERROR = 5417; 
    private Integer code; 
    private String message; 

    public EPNetError() { 
    } 

    public EPNetError(EPNetErrorEnum error){ 
     this.code = error.getCode(); 
     this.message = error.getMessage(); 
    } 

    public EPNetError(EPNetErrorEnum error, String message){ 
     this.code = error.getCode(); 
     this.message = message; 
    } 

    public EPNetError(String message){ 
     this.code = EPNetError.UNEXPECTED_ERROR; 
     this.message = message; 
    } 

    public EPNetError(Integer code, String message) { 
     this.code = code; 
     this.message = message; 
    } 

    public Integer getCode() { 
     return code; 
    } 

    public void setCode(Integer code) { 
     this.code = code; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

} 

我得到的序列化的響應是

{"playerSession":null} 

即使我100%肯定有序列化對象之前的錯誤消息部分。

另外值得一提我使用傑克遜1.9.2和澤西1.13

回答

1

如果你期待「錯誤」被收錄,問題是isError()@JsonIgnore,不含任何其他註釋。因此,請在getError()旁添加@JsonProperty並將其包含在內。您可能還需要將其添加到setError()

這裏的問題在於,傑克遜認爲@JsonIgnore這裏的意思是「忽略屬性錯誤」,而你可能只是希望忽略那個特定的訪問者。

+0

工作感謝斯塔克斯曼! – EpicOfChaos

相關問題