首页 > 解决方案 > 使用 Jackson 将 Y/N 映射为 true/false 布尔值将 XML 反序列化为对象

问题描述

我需要将 xml 中列为 Y/N 的元素映射到布尔值(真/假)。

xml 中的元素之一是:

<parent_node>
  <due_override_flag>N</due_override_flag>
  ...more elements
</parent_node>

我需要将“N”/“Y”映射到布尔值 false/true 这是我想要将元素映射到的类:

@JsonRootName("trailer_standard_loads")
@JsonIgnoreProperties(ignoreUnknown=true)
public class StandardLoad {
    @JsonProperty("trailer_load_seq")
    private Integer trailerLoadSeq;
    private String createdBy;
    private ZonedDateTime createdDt;
    private String updatedBy;
    private ZonedDateTime updatedDt;
    @JsonProperty("due_override_flag")
    private Boolean dueOverrideFlag;
}

我有标准的 getter 和 setter。我从文档中不明白如何映射 Y = true; N = 假;

标签: javajackson-dataformat-xml

解决方案


在 setter 方法中添加该逻辑

@JsonRootName("trailer_standard_loads")
@JsonIgnoreProperties(ignoreUnknown=true)     
  public class StandardLoad {
  @JsonProperty("trailer_load_seq")
  private Integer trailerLoadSeq;
  private String createdBy;
  private ZonedDateTime createdDt;
  private String updatedBy;
  private ZonedDateTime updatedDt;

  private Boolean dueOverrideFlag;

    @JsonProperty("due_override_flag")
    public void setDueOverrideFlag(String value)  {

     this.dueOverrideFlag = value.equalsIgnoreCase("Y) ? true : false;

      }

     public Boolean getDueOverrideFlag() {

      return this.dueOverrideFlag;

      }
  }

推荐阅读