Jakarta ee 返回列表时没有包装器元素

Jakarta ee 返回列表时没有包装器元素,jakarta-ee,jaxb,jackson,jax-rs,Jakarta Ee,Jaxb,Jackson,Jax Rs,我正在使用JAX-RS/JAXB和JPA创建REST Web服务 @GET @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public List<MyObject> getList() { List<MyObject> resultList = em.createNamedQuery( "MyObject.findAll").getResultLis

我正在使用JAX-RS/JAXB和JPA创建REST Web服务

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<MyObject> getList() {
    List<MyObject> resultList = em.createNamedQuery(
            "MyObject.findAll").getResultList();
    return resultList;
}
对于xml:

    <mYObject>
      <MObject>
        <attribute>value</attribute>
      </MyObject>
      <MyObject>
        <attribute>value</attribute>
      </MyObject>
    </mYObject>

==>没有包装器对象,只有包含所有对象的普通数组?

MyObject
中使用来注释
属性

如果我没弄错的话,我不知道。但我想你想要:

  • 重命名mYObject
  • 除掉我的对象
  • 关于问题1

    --您可以使用@XmlRootElement(name=“NOTmYObject”)将其重写为NOTmYObject

    关于问题2


    --如果您希望POJO中的数据结构不同于HTTP中的json,JaxB不会假定这种灵活性。JaxB严格地将数据结构视为服务和客户机之间的契约。使用xsd文件来定义此契约更具前瞻性。或者,如果你真的需要这种灵活性,你可能想看看杰克逊

    我决定继续使用默认列表封送


    但是,如果您想归档自定义封送和命名,您必须在。。。什么?例如,哪个容器。我不能在类上使用@XmlValue注释。
    属性
    MyObject
    类的属性,不是类谢谢:)1)不起作用,它重命名每个元素的标记“MyObject”。但不是外部的“wrapper-/ListTag”元素“mYObjects”。对于2):我并不希望POJO结构有所不同——我返回一个对象的ArrayList,所以我希望数组中包含对象。而且不是一个包含对象数组的对象……1)没有简单的解决方案来指定包装标签。使用“@Provider”检查解决方案。2) 这就是JaxRS处理列表编组的方式,您可以使用“@Provider”指定自己的方法。
        <mYObject>
          <MObject>
            <attribute>value</attribute>
          </MyObject>
          <MyObject>
            <attribute>value</attribute>
          </MyObject>
        </mYObject>
    
       [
            {
                "attribute": "value"
            },
            {
                "attribute": "value"
            }
        ]