/ / Adicionar lista java no valor de retorno JsonObject - json, spring, spring-mvc

Adicionar lista java no valor de retorno JsonObject - json, spring, spring-mvc

Eu quero adicionar uma lista no valor de retorno json. Aqui está o meu código -

    @RequestMapping(value = "/servicearea", produces="application/json")
@ResponseBody
public String ServiceArea(Model model, HttpServletRequest req, HttpServletResponse res)
{

List<ServiceArea> serviceLists = locationService.getAllServiceArea();

JsonObject result = Json.createObjectBuilder()
.add("message", "test")
.add("serviceLists", serviceLists)
.build();

return result.toString();
}

"serviceLists" é o que eu quero adicionar. Estou recebendo erro nesta linha - .add ("serviceLists", serviceLists). A mensagem de erro é que JsonObjectBuilder não é aplicável aos argumentos.

Desde já, obrigado.

Respostas:

0 para resposta № 1

Basta criar um pojo como este

class ReturnPojo {
private String message;
private List<ServiceArea> serviceLists;

//getters and setters
}

E do seu controlador você pode fazer

ReturnPojo returnPojo = new ReturnPojo;
returnPojo.setMessage("test");
returnPojo.setServiceLists(serviceLists);

return returnPojo;

Altere a assinatura do método para retornar ReturnPojo


0 para resposta № 2

A solução abaixo é útil apenas se você estiver usando a API Rest e Spring.

crie a classe ServiceListPojo:

public class ServiceListPOJO{
List<ServiceArea> serviceLists;

public void setServiceLists(List<ServiceArea> serviceLists){
this.serviceLists = serviceLists;
}
}

Anote seu controlador com @RestController

@RestController
public class SomeController{
@RequestMapping(value = "/servicearea")
public ServiceListPOJO ServiceArea()
{
List<ServiceArea> serviceLists = locationService.getAllServiceArea();
ServiceListPOJO slp = new ServiceListPOJO();
slp.setServciceLists(serviceLists);
return slp;
}
}