2017-08-07 75 views
0

在傑克遜2.8.6既不@JsonPropertyOrder(alphabetic = true)也不傑克遜@JsonPropertyOrder忽略版本2.8.6

@JsonPropertyOrder(value = {"status", "extraCost", "liability", "advice", "clause"})

..have我的Java對象是如何序列任何影響。

@com.fasterxml.jackson.annotation.JsonPropertyOrder(alphabetic = true) 
class MyPremium { 
    private String status; 
    private BigDecimal extraCost = BigDecimal.ZERO; 
    private Premium liability = new Premium();  
    private String advice; 
    private List<String> clause; 

    // getters and setters omitted 
} 

隨着每個應用程序重新啓動序列化輸出更改中屬性的順序。

任何想法可能是什麼問題?文件相當模糊。它表明它不適用於JSON,但我再次看到許多此註釋成功排列JSON屬性的examples

該註釋可以或可以不具有上反序列化效果:對於 基本JSON處理沒有效果,但對於其他支持的數據 類型(或結構約定)可以存在。

注意:對於屬性允許註釋,從2.4開始,大部分爲 以支持Map條目的字母順序。

http://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.8.6/com/fasterxml/jackson/annotation/JsonPropertyOrder.html

回答

0

反序列化的文檔的一提的是這裏無關緊要 - 你是序列化的屬性。傑克遜2.x肯定適用於註釋。

但是,您不包括用於序列化的代碼,因此,如果不直接使用,則顯示它(或者說明使用它的是什麼框架)可能會有所幫助。

除此之外,是的,在編寫JSON(或其他支持的格式)時,使用所示的註釋應該改變排序。一種可能是你使用的實際ObjectMapper來自Jackson 1.x(它有不同的註釋)。 或者,如果你不控制序列化,可能框架甚至不使用Jackson(一些web框架默認爲其他json庫)。