3

我正在使用 JAXB 编写 JAX-RS 来编组我的对象。我有一个简单的对象,NameValuePair我想用 PascalCase 发送。一切正常,除了它被包裹在一个camelCase包装器中,<nameValuePairs>.

这是我的课:

@XmlRootElement(name = "NameValuePair")
public class NameValuePair implements Serializable {

    private String name = null;
    private String value = null;

    public NameValuePair( String name, String value ) {
        this.name = name;
        this.value = value;
    }

    @XmlElement(name = "Name")
    public String getName() {
        return name;
    }

    @XmlElement(name = "Value")
    public String getValue() {
        return value;
    }
}

这是它的使用方式:

public Response getNameValuePairs() {
    NameValuePair[] nameValuePairs;
    try {
        nameValuePairs = manager.getNameValuePairs();
    } catch (Exception e) {
        return Response
                .status(Response.Status.INTERNAL_SERVER_ERROR)
                .build();
    }

    return Response
            .status(Response.Status.OK)
            .entity(nameValuePairs)
            .build();
}

但是,返回的 XML 如下所示:

<nameValuePairs>
    <NameValuePair>
        <Name>A Name</Name>
        <Value>1</Value>
    </NameValuePair>
    <NameValuePair>
        <Name>Another Name</Name>
        <Value>2</Value>
    </NameValuePair>
</nameValuePairs>

如何更改<nameValuePairs><NameValuePairs>与架构的其余部分匹配?

4

1 回答 1

4

似乎数组名称用于 XML 的根节点。对我来说最简单的方法似乎是将您的实体包装在一个列表中:

@XmlRootElement(name="NameValuePairs")
public class NameValuePairs {
    List<NameValuePair> nameValuePairs;
}

并返回:

public Response getNameValuePairs() {
    return Response
        .entity(new NameValuePairs(...))
        .build();
}
于 2012-10-12T16:19:31.323 回答