【问题标题】:Jackson + Jersey returns List with root name "List"Jackson + Jersey 返回根名称为“List”的 List
【发布时间】:2011-05-24 17:46:43
【问题描述】:

我目前正在尝试使用 Jackson 和 Jersey 创建一个用于序列化 POJO 对象的系统,这是我的资源:

@Path("/OrganicasFuncao")

公共类 OrganicasFuncaoResource {

public OrganicasFuncaoResource() {
    // TODO Auto-generated constructor stub
}

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/getAllOrganicasFuncao")

public List<OrganicaFuncaoMobileEntity> getOrganicasFuncao(){

     List<OrganicaFuncaoMobileEntity> organicas; organicas= new ArrayList<OrganicaFuncaoMobileEntity>();

    //dummy data
    organicas.add(fillOrganicaFuncao(111,123,"Função Assim","2010-12-23"));
    organicas.add(fillOrganicaFuncao(113,124,"Função Assada","2000-05-21"));
    organicas.add(fillOrganicaFuncao(113,125,"Função Meio termo","2002-12-23"));
    organicas.add(fillOrganicaFuncao(112,126,"Função Mal Passada","2011-06-14"));
    organicas.add(fillOrganicaFuncao(112,127,"Função Bem Passada","2006-02-01"));
    organicas.add(fillOrganicaFuncao(111,128,"Função Crua","2003-04-07"));
    organicas.add(fillOrganicaFuncao(113,127,"Função Queimadinha","2006-02-01"));
    organicas.add(fillOrganicaFuncao(113,128,"Função Tostada","2003-04-07"));


    return organicas;
}

private OrganicaFuncaoMobileEntity fillOrganicaFuncao(int id, int idOrg, String designacao, String dataAlteracao){

    OrganicaFuncaoMobileEntity orgFunc= new OrganicaFuncaoMobileEntity();
    orgFunc.setDataAlteracao(dataAlteracao);
    orgFunc.setDesignacao(designacao);
    orgFunc.setId(id);
    orgFunc.setIdOrganica(idOrg);

    return orgFunc;
}

}

这会返回:

{ “列表” : [ { "designacao" : "Função Assim", “idOrganica”:123, "dataAlteracao" : "2010-12-23", “身份证”:111 }, { "designacao" : "Função Assada", “idOrganica”:124, “数据Alteracao”:“2000-05-21”, “身份证”:113 }, { "designacao" : "Função Meio termo", “idOrganica”:125, “数据Alteracao”:“2002-12-23”, “身份证”:113 }, { “designacao”:“Função Mal Passada”, “idOrganica”:126, "dataAlteracao" : "2011-06-14", “身份证”:112 }, { "designacao" : "Função Bem Passada", “idOrganica”:127, “dataAlteracao”:“2006-02-01”, “身份证”:112 }, { "designacao" : "Função Crua", “idOrganica”:128, “dataAlteracao”:“2003-04-07”, “身份证”:111 }, { "designacao" : "Função Queimadinha", “idOrganica”:127, “dataAlteracao”:“2006-02-01”, “身份证”:113 }, { "designacao" : "Função Tostada", “idOrganica”:128, “dataAlteracao”:“2003-04-07”, “身份证”:113 }] }

如何用我自己的一些名称更改“列表”名称?我尝试使用@jsonTypeName 或@jsonTypeInfo 之类的几个注解,但没有奏效....

【问题讨论】:

  • 您是否将 Jersey 配置为使用 Jackson,因为默认情况下它使用 JAXB。您提供的那种输出似乎与 JAXB 有关,而不是与杰克逊有关。

标签: list element jersey root jackson


【解决方案1】:

为 Jackson 添加依赖项。 Jackson 是 Jersey 支持的一个很好的 JSON 序列化器/反序列化器。它不需要对序列化/反序列化的类进行任何注释,只需将它们定义为“结构”:

public class Person {
    public String name;
    public int age;
}

如果你让你的字段为public,它就不需要getter 和setter。您可以在此处找到所需的依赖项:http://mvnrepository.com/search.html?query=com.fasterxml.jackson.core。无需额外配置,Jersey 会检测到它是否在类路径中。

您遇到的问题可能是由 Jerseys 默认的 OOTB JSON 序列化/反序列化引起的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多