【问题标题】:How to print List() in @RestController Response?如何在@RestController Response 中打印 List()?
【发布时间】:2017-07-26 02:48:01
【问题描述】:

我在 Spring 应用程序中有一个控制器,使用此代码:

@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&lt;Project&gt; 以及我新创建的对象 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 响应都类似于:{"data":[{}],"error":null}

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

谁能告诉我为什么我的列表没有包含在 JSON 中?谢谢!

【问题讨论】:

标签: java spring spring-boot spring-4


【解决方案1】:

您需要返回一个 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 Boot,你所做的一切都会被正确地反序列化。您不需要 ResponseObject 类。

【讨论】:

  • 更容易做到:new ResponseEntity(list, HttpStatus.OK)
【解决方案2】:

protected Object data;

改成

protected List&lt;Object&gt; data;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-18
    • 2021-04-15
    • 2020-08-07
    • 1970-01-01
    • 2018-09-29
    • 2018-04-29
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多