如何在@RestController响应中打印List()?

时间:2017-03-06 09:39:57

标签: java spring spring-boot spring-4

我在Spring App中使用此代码控制器:

@RequestMapping("/")
@ResponseBody
public ResponseObject index(){
    System.out.println(this.sf);
    Session session = sf.openSession();
    List<Project> projects = session.createQuery("from Project").list();
    session.close();
    System.out.println(projects);
    return new ResponseObject(projects);
}

我已尝试使用此代码返回List<Project>以及我新创建的对象ResponseObject

public class ResponseObject {
    protected Object data;
    protected Object error;

    public ResponseObject(Object data) {
        this.data = data;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public Object getError() {
        return error;
    }

    public void setError(Object error) {
        this.error = error;
    }
}

但在所有情况下,我的JSON Reponse看起来像是:{"data":[{}],"error":null}

Projects输出为:[Project{id=1, name='Digital project'}]

有人可以告诉我为什么我的列表不包含在JSON中吗?谢谢!

2 个答案:

答案 0 :(得分:0)

protected Object data;

更改为

protected List<Object> data;

答案 1 :(得分:0)

您需要返回一个ResponseEntity,如:

return new ResponseEntity<List<Project>>(projects, HttpStatus.OK);

请参阅http://docs.spring.io/autorepo/docs/spring/4.0.2.RELEASE/javadoc-api/org/springframework/http/ResponseEntity.html

如果您在类路径中拥有Jackson,如果您使用Spring启动,那么您所做的一切都将被正确反序列化。您不需要ResponseObject类。