在Spring MVC中如何返回多个POJO类的JSON

时间:2017-01-17 09:43:59

标签: java json hibernate spring-mvc

我有一个项目,其中我有多个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包含来自查询的数据。但是我希望来自多个Tables / POJO类的数据作为单个JSON。我能够从IterationInfo表返回数据。但是如何从多个表返回/ POJO课程。

2 个答案:

答案 0 :(得分:2)

创建一个包含所需数据的包装器dto,例如:

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;
}

答案 1 :(得分:0)

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;
}