当前位置: 首页 > 知识库问答 >
问题:

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

程谭三
2023-03-14

现在,我正在使用ObjectMapper将映射转换为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 all属性为null。我试图调整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;
}

这是现在的调试视图:

我应该怎么做才能修复它?

共有1个答案

莘俊能
2023-03-14

查看analysis Info映射,字段名称与POJO中的实例变量名称不匹配。例如,字段名称是fullPullChannelCount,而您的映射具有fullPullchannelcount

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

@JsonProperty("fullpullchannelcount")
private Long fullPullChannelCount;

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

请参阅:@JsonProperty属性是何时使用的,它的用途是什么?

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

 类似资料:
  • 我是java新手,正在尝试学习objectmapper。我正在使用它将地图转换为pojo。地图中的键是字符串,所有值都是字符串值,除了我想转换为地图的值。请仔细阅读下面的示例代码,以获得更清晰的图片。 POJO类: 测试代码: 例外: 尝试的变体选项: 我知道我可以将map1字段也保留为String,然后使用另一个对象映射器实例将其转换为map,但我想避免它。有没有办法直接将测试代码中的字符串转换

  • 我一直在研究Jackson,但似乎必须将映射转换为JSON,然后将生成的JSON转换为POJO。 有没有一种方法可以将地图直接转换成POJO?

  • 我有一张这样的地图<代码>地图 我使用了对象映射器,但它不工作,因为映射在我的结构中包含另一个映射。

  • 我试图在Go中创建一个泛型方法,该方法将使用来自< code > map[string]interface { } 的数据填充< code>struct。例如,方法签名和用法可能如下所示: 我知道使用JSON作为中介可以做到这一点;有没有其他更有效的方法?

  • 我在解决泛型问题时遇到了一些麻烦。我有一个“猫”对象列表和一个“狗”对象列表,我需要将它们传递到同一个方法中。该方法的返回类型是一个“字符串”和“动物列表”的映射,我试图找出一种方法来将带有动物列表的映射转换为带有猫或狗列表的映射。 这工作很好,如果我有一个单独的方法猫和狗,但我正在寻找一个更灵活的解决方案。 标题中出现错误的行: 注意:这是一个简化的例子,我必须能够使用地图中的列表作为“猫”或“