Джексон + Джерси возвращает список с корневым именем List

В настоящее время я пытаюсь создать систему для сериализации объектов 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;
}

}

Это возвращает:

{ "List" : [ { "designacao" : "Função Assim", "idOrganica" : 123, "dataAlteracao" : "2010-12-23", "id" : 111 }, { "designacao" : «Função Assada», «idOrganica»: 124, «dataAlteracao»: «2000-05-21», «id»: 113}, { «designacao»: «Função Meio termo», « idOrganica» : 125, «dataAlteracao» : «2002-12-23», «id» : 113 }, { «designacao» : «Função Mal Passada», «idOrganica» : 126, «dataAlteracao» : « 14.06.2011", "id" : 112 }, { "designacao": "Função Bem Passada", "idOrganica" : 127, "dataAlteracao" : "2006-02-01", "id" : 112 }, { "designacao" : "Função Crua", "idOrganica" : 128, "dataAlteracao" : "2003-04-07", "id" : 111 }, { "designacao" : "Funà §Ã£o Queimadinha", "idOrganica" : 127, "dataAlteracao" : "2006-02-01", "id" : 113 }, { "designacao" : "Função Tostada", "idOrganica": 128, «dataAlteracao»: «2003-04-07», «id»: 113 } ] }

Как я могу изменить имя «Списка» на свое собственное? я пытался использовать несколько аннотаций, таких как @jsonTypeName или @jsonTypeInfo, но это не сработало....


person Maxrunner    schedule 24.05.2011    source источник
comment
Вы настроили Джерси для использования Джексона, потому что по умолчанию он использует JAXB. Тип вывода, который вы даете, кажется, связан с JAXB, а не с Джексоном.   -  person yves amsellem    schedule 20.06.2011


Ответы (1)


Добавьте зависимость для Джексона. Джексон — хороший сериализатор/десериализатор JSON, который поддерживает Джерси. Он не требует никаких аннотаций к сериализованным/десериализованным классам, просто определите их как «структуры»:

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

Ему не нужны геттеры и сеттеры, если вы разрешите своим полям быть public. Необходимые зависимости можно найти здесь: http://mvnrepository.com/search.html?query=com.fasterxml.jackson.core. Нет необходимости в дополнительной настройке, Джерси обнаружит его, если он находится в пути к классам.

Проблема, с которой вы столкнулись, вероятно, вызвана сериализацией/десериализацией OOTB JSON по умолчанию.

person joscarsson    schedule 16.06.2013