3

我们如何使用 JAXB 编组/解组包含列表的 JSON 中的根元素?

所以它会将JSON作为

{
    "tag" : [
        {
            "id" : "a",
            "id2": "aa" 
        },
        {
            "id" : "b",
            "id2" : "bb" 
        },
        {
            "id" : "c",
            "id2" : "cc" 
        } 
    ] 
}

我正在使用通过 Jettison 支持 JSON 的 Apache CXF。

Java 类可能如下所示。可以对列表使用 XmlList 注释,并使用 XmlValue 将该列表放在根元素中。问题是 XmlValue 不会采用用户定义的类型。

@XmlRootElement(name = "tag")
public class test
{
    @XmlList
    @XmlValue
    private List<UserDefinedType> testList;
}

有没有办法解决这个问题。我需要它来解组传入的 JSON。从这里得到这个想法 http://bdoughan.blogspot.com/2010/09/jaxb-collection-properties.html

4

2 回答 2

2

这应该适用于您提到的 JSON 格式。但是,如果您也想编组/解组为某种 XML 格式,它可能不起作用。

@XmlRootElement
public class Test {
    @XmlElement(name = "tag")
    private List<UserDefinedType> testList;
}

public class UserDefinedType {
    @XmlElement(name = "id")
    private String someId;

    @XmlElement(name = "id2")
    private String someId2;
}
于 2011-12-14T17:26:09.887 回答
0

这对我有用。XmlRootElement 和列表的名称相同。

@XmlRootElement(name = "tag")
@XmlAccessorType(XmlAccessType.FIELD)
public class Test {
    @XmlElement(name = "tag")
    public List<UserDefinedType> testList;
}

@XmlAccessorType(XmlAccessType.FIELD)
public class UserDefinedType {
    @XmlElement(name = "id")
    public String someId;

    @XmlElement(name = "id2")
    public String someId2;
}
于 2019-05-08T09:13:40.517 回答