编程语言
首页 > 编程语言> > java-JAXB-用于类集合的PascalCase包装器

java-JAXB-用于类集合的PascalCase包装器

作者:互联网

我正在使用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>与其他模式匹配?

解决方法:

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

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

并返回:

public Response getNameValuePairs() {
    return Response
        .entity(new NameValuePairs(...))
        .build();
}

标签:jax-rs,jaxb,xml,java
来源: https://codeday.me/bug/20191031/1978377.html