Jackson将json字符串转换为Java对象导致默认对象

时间:2013-10-10 13:34:47

标签: java json jackson

我正在尝试将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进行反序列化,它运行良好。但我需要使用杰克逊转换器。

1 个答案:

答案 0 :(得分:0)

您的变量命名似乎存在问题。由于您遗漏了getter和setter方法,我认为它们看起来像setUserId(String UserId)getUserId()等。 Jackson希望(与Java命名约定一致)JSON中的字段命名为userId等(请注意小写!)。 您可以使用JsonProperty annotation强制使用您想要的名称(例如@JsonProperty(“UserId”))。