杰克逊将XML属性转换为平面JSON

时间:2018-07-27 09:17:45

标签: json jaxb jackson2

我有这个(模仿实际生产数据)的xml,它需要按如下方式转换为JSON。(我正在使用Jackson2.8):

<testCode code="ABC" lang="java" />

为此,我拥有的POJO如下:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Phone", propOrder = {
  "descriptions"
}
@XmlRootElement(name="phone")
public class Phone extends PhoneBase {

protected TestCode testCode;

getter()
setter();
}

TestCode如下:

XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TestCode", propOrder = {
"code"
})
public class TestCode {

protected String descriptor;

@XmlAttribute(required = true)       
protected String code;

@XmlAttribute   
protected String lang;
}

将其转换为JSON时,我得到以下信息:

 testCode: {
 code: "ABC",
 lang: "java"
 }

我想要以下东西:

testCode: "ABC"

请注意,我忽略了任何其他属性,并且使“代码”变平。另外,不需要“自我编码”。

有人可以建议任何建议吗?我尝试了XmlElementWrapper,但是没有用。

1 个答案:

答案 0 :(得分:0)

我可以通过在TestCode类中提供以下方法来解决该问题:

   @JsonValue
   public String toJson() {
         return this.code;
   }

将其发布可能会有所帮助。