/ / Ajouter une liste java dans la valeur de retour JsonObject - json, spring, spring-mvc

Ajouter la liste Java dans la valeur de retour JsonObject - json, spring, spring-mvc

Je veux ajouter une liste dans la valeur de retour json. Voici mon code -

    @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" est celui que je veux ajouter. J'obtiens une erreur dans cette ligne - .add ("serviceLists", serviceLists). Le message d'erreur est que JsonObjectBuilder n'est pas applicable pour les arguments.

Merci d'avance.

Réponses:

0 pour la réponse № 1

Il suffit de créer un pojo comme celui-ci

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

//getters and setters
}

Et depuis votre contrôleur, vous pouvez faire

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

return returnPojo;

Modifier la signature de la méthode à renvoyer ReturnPojo


0 pour la réponse № 2

La solution ci-dessous n'est utile que si vous utilisez Rest API et Spring.

créer la classe ServiceListPojo:

public class ServiceListPOJO{
List<ServiceArea> serviceLists;

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

Annotez votre contrôleur avec @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;
}
}