1

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

4

1 回答 1

0

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

于 2013-10-10T13:44:45.963 回答