微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ObjectMapper 无法在 Java 11 中将映射转换为 POJO

如何解决ObjectMapper 无法在 Java 11 中将映射转换为 POJO

现在我使用 ObjectMapper 将 Map 转换为 Java 中的 POJO,这是我的代码

@Override
    public RSSSubSourceExtDTO getChannelAnalysisInfo() {
        Map<String,Object> analysisInfo = customRSSSubSourceMapper.getSourceInfo(new SubSourceRequest());
        final ObjectMapper mapper = new ObjectMapper();
        final RSSSubSourceExtDTO pojo = mapper.convertValue(analysisInfo,RSSSubSourceExtDTO.class);
        return pojo;
    }

但结果POJO所有属性都为空。我试图调整 POJO 属性名称,并将 POJO 属性调整为对象类型,但仍然无法将值从映射转换为 POJO。这是我的 POJO 定义:

import java.io.Serializable;

/**
 * @author dolphin
 */
@JsonIgnoreProperties(ignoreUnkNown = true)
@Data
public class RSSSubSourceExtDTO implements Serializable {
    /**
     * support increment pull channel count
     * RSS_sub_source.id
     *
     * @mbggenerated
     */
    private Object incrementPullChannelCount;

    /**
     * do not support increment pull channel count
     * RSS_sub_source.created_time
     *
     * @mbggenerated
     */
    private Long fullPullChannelCount;

    /**
     * 
     * RSS_sub_source.editor_pick
     *
     * @mbggenerated
     */
    @ApiModelProperty(value = ")")
    private Long editorPickChannelCount;
}

这是现在的调试视图:

enter image description here

我该怎么做才能修复它?

解决方法

查看 analysisInfo 映射,字段名称与 POJO 中的实例变量名称不匹配。例如,字段名称是 fullPullChannelCount 而您的地图是 fullpullchannelcount

使用 @JsonProperty 将映射中的属性名称映射到 POJO 中的变量。

@JsonProperty("fullpullchannelcount")
private Long fullPullChannelCount;

@JsonProperty("editor_pick_channel_count")
private Long editorPickChannelCount;
....

见:When is the @JsonProperty property used and what is it used for?

或者,您可以更改序列化数据中的属性名称以匹配实例变量名称。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。