杰克逊将 XML 属性转换为平面 JSON
Jackson transforming XML attribute to flat JSON
我有这个(模仿实际生产数据)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();
}
测试代码如下:
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"
请注意,我忽略了任何其他属性并扁平化 "code"。另外,"code" 不需要它自己。
有人可以提出任何建议吗?我尝试了 XmlElementWrapper 但它没有用。
我能够通过在我的测试代码中提供以下方法来解决它 class:
@JsonValue
public String toJson() {
return this.code;
}
张贴它可能会对某人有所帮助。
我有这个(模仿实际生产数据)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();
}
测试代码如下:
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"
请注意,我忽略了任何其他属性并扁平化 "code"。另外,"code" 不需要它自己。
有人可以提出任何建议吗?我尝试了 XmlElementWrapper 但它没有用。
我能够通过在我的测试代码中提供以下方法来解决它 class:
@JsonValue
public String toJson() {
return this.code;
}
张贴它可能会对某人有所帮助。