2013-10-10 57 views
1

我想將json字符串轉換爲Java對象。一切順利,對象被創建,但它的屬性不被傳遞。這導致一個空的(默認)對象。我錯過了什麼?傑克遜從json字符串轉換爲Java對象結果默認對象

這裏是一個Java對象模型:

public class LetterCounts implements Serializable { 

    private String UserId; 
    private int Total; 
    private int UnRead; 
    private int Flagged; 
    private boolean Deleted; 

    public LetterCounts(){ 
    } 
    //getters and setters 
} 

這裏是我的代碼片段:

ObjectMapper mapper = new ObjectMapper(); 
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
T returnValue = mapper.readValue(sb.toString(), clazz); 

這裏clazz中是一流的,我需要轉換爲(在這種情況下LetterCounts)名稱sb是一個StringBuilder,如下所示:

{"$id":"1","UserId":"users_1","Total":30,"UnRead":13,"Flagged":17,"Deleted":false} 

如果我使用gson進行反序列化,效果很好。但我需要使用傑克遜轉換器。

+0

您使用的是什麼傑克遜版本? –

+0

我正在使用2.2.3 – etilia

回答

0

這似乎與您的變量命名有關。由於您忽略了getter和setter方法,我假設它們看起來像setUserId(String UserId),getUserId()等。 Jackson期望(與Java命名約定一致)JSON中的字段被命名爲userId等(請注意小寫! )。 您可以使用JsonProperty annotation來強制使用您想要的名稱(例如@JsonProperty(「UserId」))。