Java Jackson将XML/Bean转换为Json数组
(请注意,我只提供代码片段来解释我的情况,这些不是完整的对象) 我使用的是Jackson2.8.2。我有以下格式的xml:Java Jackson将XML/Bean转换为Json数组,java,arrays,json,jaxb,jackson2,Java,Arrays,Json,Jaxb,Jackson2,(请注意,我只提供代码片段来解释我的情况,这些不是完整的对象) 我使用的是Jackson2.8.2。我有以下格式的xml: <descriptions> <description description1="1" description1Text="text1" /> <description description1="6" description1Text="text2" description2="19" description2Text="B
<descriptions>
<description description1="1" description1Text="text1" />
<description description1="6" description1Text="text2" description2="19" description2Text="Board Member (BRD)" />
</descriptions>
课程描述如下:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Phone", propOrder = {
"descriptions"
}
@XmlRootElement(name="phone")
public class Phone extends PhoneBase {
protected Descriptions descriptions;
getter()
setter();
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Descriptions", propOrder = {
"description"
})
public class Descriptions {
@XmlElement(required = true)
protected List<Description> description;
public List<Description> getDescription() {
if (description == null) {
description = new ArrayList<Description>();
}
return this.description;
}
}
{
"descriptions": [{
"description1": "1",
"description1_text": "text1"
}, {
"description1": "6",
"description1_text": "text2",
"description2": "19",
"description2_text": "Board Member (BRD)"
}
]}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Phone", propOrder = {
"description"
}
@XmlRootElement(name="phone")
public class Phone
extends PhoneBase
{
@XmlElementWrapper(name = "descriptions")
@JsonProperty(value = "descriptions")
@XmlElement(required = true)
protected List<Description> description;
public List<Description> getDescription() {
if (description == null) {
description = new ArrayList<Description>();
}
return this.description;
}
}
而我希望它如下所示:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Phone", propOrder = {
"descriptions"
}
@XmlRootElement(name="phone")
public class Phone extends PhoneBase {
protected Descriptions descriptions;
getter()
setter();
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Descriptions", propOrder = {
"description"
})
public class Descriptions {
@XmlElement(required = true)
protected List<Description> description;
public List<Description> getDescription() {
if (description == null) {
description = new ArrayList<Description>();
}
return this.description;
}
}
{
"descriptions": [{
"description1": "1",
"description1_text": "text1"
}, {
"description1": "6",
"description1_text": "text2",
"description2": "19",
"description2_text": "Board Member (BRD)"
}
]}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Phone", propOrder = {
"description"
}
@XmlRootElement(name="phone")
public class Phone
extends PhoneBase
{
@XmlElementWrapper(name = "descriptions")
@JsonProperty(value = "descriptions")
@XmlElement(required = true)
protected List<Description> description;
public List<Description> getDescription() {
if (description == null) {
description = new ArrayList<Description>();
}
return this.description;
}
}
请注意,我不希望父节点,而是希望子节点表示为JSON数组,该键的名称表示为父节点的名称。
有人能建议我如何做到这一点吗
谢谢我使用lexicore中的指针解决了我的问题,并将我的电话类别更改如下:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Phone", propOrder = {
"descriptions"
}
@XmlRootElement(name="phone")
public class Phone extends PhoneBase {
protected Descriptions descriptions;
getter()
setter();
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Descriptions", propOrder = {
"description"
})
public class Descriptions {
@XmlElement(required = true)
protected List<Description> description;
public List<Description> getDescription() {
if (description == null) {
description = new ArrayList<Description>();
}
return this.description;
}
}
{
"descriptions": [{
"description1": "1",
"description1_text": "text1"
}, {
"description1": "6",
"description1_text": "text2",
"description2": "19",
"description2_text": "Board Member (BRD)"
}
]}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Phone", propOrder = {
"description"
}
@XmlRootElement(name="phone")
public class Phone
extends PhoneBase
{
@XmlElementWrapper(name = "descriptions")
@JsonProperty(value = "descriptions")
@XmlElement(required = true)
protected List<Description> description;
public List<Description> getDescription() {
if (description == null) {
description = new ArrayList<Description>();
}
return this.description;
}
}
@xmlacessortype(xmlacesstype.FIELD)
@XmlType(name=“Phone”,比例器={
“说明”
}
@XmlRootElement(name=“phone”)
公用电话
扩展音基
{
@XmlElementWrapper(name=“descriptions”)
@JsonProperty(value=“descriptions”)
@XmlElement(必需=true)
保护列表描述;
公共列表getDescription(){
if(description==null){
description=新建ArrayList();
}
返回此.description;
}
}
尝试私人列表描述;
字段使用@xmlementwrapper
,直接在手机中使用。感谢lexicore,这帮助我解决了此问题。请将您的解决方案作为答案发布。这是一件好事,您将获得一些代表积分作为奖励。:)