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