java - 如何将对象映射到字符串中以使用 ObjectMapper 进行设置

标签 java java-8 jackson

我正在使用 Jackson ObjectMapper 将字符串转换为 Pojo。

我收到的消息:

{
    "countryCode": "US",
    "skuNumber": "TEST",
    "itemTaxCd": "89999",
    "lastModifiedBy": "xyz"
}

方法:

public void processImsProductTaxEvents(String event) {
    try {
        SkuMasterDTO message = objectMapper.readValue(event, SkuMasterDTO.class);
        log.debug("Received message from IMS", message);
    } catch (Exception e) {
        log.error("Error in Object Mapper converting String to TaxCodeDTO", e);
    }
}

现在 countryCode 在 CountryDTO 里面,在 SkuMasterDTO 里面定义为一个 Set

private Set<CountryDTO> countries = new HashSet<>();

CountryDTO 类

public class CountryDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @NotNull
    @Size(max = 2)
    private String countryCode;

我正在尝试将国家/地区代码设置为 而不更改输入 Json。有什么建议吗?

最佳答案

考虑使用 DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAYS在您的 ObjectMapper 实例中。然后,您必须将 json 字段 countryCode 更改为 countries 或使用 Set countries 标记为 json 属性 countryCode @JsonProperty 并在 String 参数中提供构造函数/工厂方法。这将使您的对象映射器按照您的要求运行。

关于java - 如何将对象映射到字符串中以使用 ObjectMapper 进行设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43101287/

相关文章:

junit - 测试 Java 6 和 Java 8 中的类型匹配差异

java - Bifunction 可以用来替换 Java 8 中的 Tuple 吗?

java - 如何在 Jackson 中反序列化抽象类

java - Spring 4 Jackson 数组映射

java - 将 RestAssured 转换为 RestTemplate

java-8 - 此表达式的目标类型必须是 MethodReferences 中的函数式接口(interface)

java - 来自java的SQL日期时间

android - 使用 spring 忽略 Jackson 中的无效值

java - JMockit - 期望 - 匹配调用包含模拟对象作为参数的方法

Tomcat 上的 Java NullPointEreException