【问题标题】:In Spring MVC how to return JSON of multiple POJO classes在 Spring MVC 中如何返回多个 POJO 类的 JSON
【发布时间】:2017-01-17 09:43:59
【问题描述】:

我有一个项目,其中有多个 POJO 类。这些类使用 Hibernate 与数据库映射。我想以 JSON 格式从数据库返回数据。我的代码是:

@RequestMapping(value="{userid}",method=RequestMethod.GET)
public @ResponseBody List<IterationInfo> getIterationInfoInJSON(@PathVariable int userid) 
{
    Configuration con = new Configuration();
    con.configure("hibernate.cfg.xml");

    SessionFactory SF = con.buildSessionFactory();
    Session session= SF.openSession();
    Transaction TR = session.beginTransaction();
    Query query=session.createQuery("from IterationInfo");
    List<IterationInfo> listiterationinfo=query.list();
    session.close();

    SF.close();
    return listiterationinfo;
}

IterationInfo 是一个 POJO 类。List 包含来自查询的数据。但我希望来自多个表/POJO 类的数据作为单个 JSON。我能够从 IterationInfo 表中返回数据。但是如何从多个表中返回/ POJO 类。

【问题讨论】:

  • 您必须获取单个类对象并添加到 List 并返回它
  • @Sreemat 你能发布一个示例/演示代码吗?谢谢

标签: java json hibernate spring-mvc


【解决方案1】:

创建一个包装器 d 以包含您需要的所有数据,例如:

class SomeResponseDto {
    private List<IterationInfo> iterationInfo;
    private List<AnotherPojoClass> anotherPojoClasses;
    // getters, setters
}

现在您可以将数据组合成单个 JSON 对象:

@RequestMapping(value="{userid}",method=RequestMethod.GET)
public @ResponseBody SomeResponseDto getIterationInfoInJSON(@PathVariable int userid) {
    // code
    SomeResponseDto dto = new SomeResponseDto();
    dto.setIterationInfos(listiterationinfo);
    dto.setAnotherPojoClasses(anotherPojoClasses);
    return dto;
}

【讨论】:

    【解决方案2】:
    Class A{ //POJO Class 1
      private String id;
      private String name;
      //Getter and setter methods
    }
    Class B{ //POJO Class 2
      private String id;
      private String name;
      //Getter and setter methods
    }
    

    为 POJO 类创建对象。

    @RequestMapping(value="{userid}",method=RequestMethod.GET)
    public @ResponseBody List<Object> getIterationInfoInJSON(@PathVariable int userid) 
    {
      A a=new A(); B b=new B();
      List<Object> ls=new List<Object>();
      ls.add(a);
      ls.add(b);
      return ls;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 2018-07-07
      • 2018-12-08
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2018-09-29
      相关资源
      最近更新 更多