【问题标题】:how to return json objects for list<POJO> in RestController如何在 RestController 中为 list<POJO> 返回 json 对象
【发布时间】:2018-09-29 00:42:03
【问题描述】:

我有一个宁静的 web 服务返回 pojo 对象列表,它没有生成正确的 json 格式。

以下是不返回json对象的代码

@RequestMapping("/getThisWeekPlan")
public List<ShiftPlannerView> getThisWeekPlan() {

    return getShiftPlanRepo.fetchThisWeekShiftPlan();
}

我的 POJO 使用 namedquery 设置 JPA 的结果并使用 hibernate

    public class ShiftPlannerView {


    public ShiftPlannerView() {
    }
    private Date shiftPlannerDate;
    private String resourceName;
    private String shiftName;

    public ShiftPlannerView(Date shiftPlannerDate, String resourceName, String shiftName) {
        super();
        this.shiftPlannerDate = shiftPlannerDate;
        this.resourceName = resourceName;
        this.shiftName = shiftName;
    }


    public Date getShiftPlannerDate() {
        return shiftPlannerDate;
    }
    public void setShiftPlannerDate(Date shiftPlannerDate) {
        this.shiftPlannerDate = shiftPlannerDate;
    }
    public String getResourceName() {
        return resourceName;
    }
    public void setResourceName(String resourceName) {
        this.resourceName = resourceName;
    }
    public String getShiftName() {
        return shiftName;
    }
    public void setShiftName(String shiftName) {
        this.shiftName = shiftName;
    }
    @Override
    public String toString() {
        return "ShiftPlannerView [shiftPlannerDate=" + shiftPlannerDate + ", resourceName=" + resourceName
                + ", shiftName=" + shiftName + "]";
    }


}

数据库调用

@Repository

公共类 GetShiftPlanRepoImpl 实现 GetShiftPlanRepo{

@PersistenceContext
EntityManager em;

@Override
public List<ShiftPlannerView> fetchThisWeekShiftPlan() {

    List<ShiftPlannerView> result= em.createNamedQuery("fetchByShiftPlannerThisWeek")
            .getResultList();
    return result;
}

}

以下是回复:

 [
    [
        "2018-04-16",
        "Elias",
        "I"
    ],
    [
        "2018-04-16",
        "Sithik",
        "II"
    ],
    [
        "2018-04-17",
        "Vikram Boya",
        "I"
    ],
    [

【问题讨论】:

  • 您得到的回应是什么?
  • @Ossin 我的问题的最后一部分是我的回答,我现在已经编辑了。
  • 您能否编辑您的问题以包含整个 POJO,包括 getter 和 setter?
  • 您的命名查询实际上可能不会返回 ShiftPlannerView 的实例,而是返回对象数组。
  • 很有可能。还请包括 JPQL 命名查询 fetchByShiftPlannerThisWeek。我认为您没有选择 whoe 对象,而只是选择个别列。

标签: java json rest spring-boot


【解决方案1】:

以下代码更改给我带来了预期的响应

@Override
public List<ShiftPlannerView> fetchThisWeekShiftPlan() {

    List<ShiftPlannerView> listOfShiftPlannerView=new ArrayList<>();
    try {

        Query q= em.createNativeQuery(ShiftPlannerConstants.THISWEEKSHIFTPLANQUERY);
        List<Object[]> result=q.getResultList();
        for(Object[] row : result){
            ShiftPlannerView emp = new ShiftPlannerView();

            Date workingDays = sdf.parse(row[0].toString());
            emp.setShiftPlannerDate(workingDays);
            emp.setResourceName(row[1].toString());
            emp.setShiftName(row[2].toString());
            listOfShiftPlannerView.add(emp);
        }
    }catch (Exception e) {
        e.printStackTrace();
    }

感谢 JB!

【讨论】:

    猜你喜欢
    • 2017-10-28
    • 2022-11-25
    • 1970-01-01
    • 2019-06-06
    • 2023-03-27
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多