java - Jackson 从 json 字符串转换为 Java 对象会产生默认对象

标签 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进行反序列化,效果很好。但我需要使用 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/

相关文章:

java - 为什么我在 Oracle DB 和 Java 中有不同的时区偏移结果?

java - 如何将帖子数据连续发送到网络和移动设备

java - 当还必须切换用户时使用 JSch 到 SFTP

javascript - Jquery 不从 JSON 文件读取

java - 使用 GSON 解析 JSON

java - 如何将生成的 JSON 数据读取到 Java 中?

java - 使用 Jackson 解析 multipart/form-data 或 application/json

java - 模块名和目录名冲突?

java - Jackson - 有什么方法可以避免在运行时父实体的序列化吗?

json - 使用 Spring 的 @RequestBody 并在之后读取 HttpServletRequest.getInputStream()