在JsonObject返回值中添加java List

时间:2017-06-07 08:25:41

标签: json spring spring-mvc

我想在json返回值中添加一个列表。这是我的代码 -

    @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'是我要添加的那个。我在这行中遇到错误 - .add(“serviceLists”,serviceLists)。错误消息是JsonObjectBuilder不适用于参数。

提前致谢。

2 个答案:

答案 0 :(得分:0)

只需像这样创建一个pojo

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

    //getters and setters
}  

从控制器中你可以做到

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

return returnPojo;    

更改方法签名以返回ReturnPojo

答案 1 :(得分:0)

以下解决方案仅在您使用Rest API和Spring时才有用。

创建类ServiceListPojo:

public class ServiceListPOJO{
List<ServiceArea> serviceLists;

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

使用@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;
    }
}