/ / Dodaj listę java w zwracanej wartości JsonObject - json, spring, spring-mvc

Dodaj listę java w wartości zwracanej przez JsonObject - json, spring, spring-mvc

Chcę dodać listę do zwracanej wartości json. Oto mój kod -

    @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” to ten, który chcę dodać. W tym wierszu pojawia się błąd - .add („serviceLists”, serviceLists). Komunikat o błędzie oznacza, że ​​JsonObjectBuilder nie ma zastosowania do argumentów.

Z góry dziękuję.

Odpowiedzi:

0 dla odpowiedzi № 1

Po prostu stwórz takie pojęcie

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

//getters and setters
}

I ze swojego kontrolera możesz to zrobić

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

return returnPojo;

Zmień podpis metody, aby zwrócić ReturnPojo


0 dla odpowiedzi nr 2

Poniższe rozwiązanie jest przydatne tylko, jeśli używasz Rest API i Spring.

utwórz klasę ServiceListPojo:

public class ServiceListPOJO{
List<ServiceArea> serviceLists;

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

Za pomocą adnotacji kontrolera @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;
}
}