我正在尝试将 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进行反序列化,效果很好。但我需要使用 jackson 转换器。
最佳答案
你的变量命名似乎有问题。由于您遗漏了 getter 和 setter 方法,我认为它们看起来像 setUserId(String UserId)
、getUserId()
等。
Jackson 希望(与 Java 命名约定一致)JSON 中的字段命名为 userId
等(注意小写!)。
您可以使用 JsonProperty annotation强制使用您想要的名称(例如 @JsonProperty("UserId"))。
关于java - Jackson 从 json 字符串转换为 Java 对象会产生默认对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297254/