[英]Play Framework : JSON
我沒有得到所需的JSON響應,因此很難通過AngularJS使用它。 以下是代碼和所需的輸出。
@Enity
@Table(name = "[empinfo]", schema = "[dbo]" )
public class salsum {
public String location
public String dept;
public double salary;
}
public class salDAO{
public static List<salsum> gsummary(){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("defaultPersistenceUnit");
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query query = em.createQuery("SELECT e.location, e.dept, e.salary FROM salsum e");
List<salsum> salSum= query.getResultList();
txn.commit();
return salSum;
}
}
public class Application extends Controller {
@Transactional
public Result SalarySumJson()
{
// return ok(Json.toJson(salDAO.gsummary()));
Gson gson = new Gson();
return ok(gson.toJson(salDAO.gsummary()));
}
}
調用DAO后,我得到了輸出:
{0: "Chicago", 1:"HR", 2: 20000}
{0: "Landon", 1:"HR", 2: 30000}
{0: "New York", 1:"HR", 2: 10000}
我如何獲得以下輸出:
{"location": "Chicago", "dept": "HR", "salary": 20000}
{"location": "Landon", "dept": "HR", "salary": 30000}
{"location": "New York", "dept":"HR", "salary": 10000}
謝謝並恭祝安康,
Nirav
我相信您需要嘗試將@SerializedName()批注添加到“ salsum”類中,如下所示:
@Entity
@Table(name = "[empinfo]", schema = "[dbo]" )
public class salsum {
@SerializedName("location")
public String location;
@SerializedName("dept")
public String dept;
@SerializedName("salary")
public double salary;
}
希望這可以幫助。 請查看此以獲取更多信息:
問題已解決。 我在上面的代碼中做了以下更改:
在模型類中添加構造函數:
@Enity
@Table(name = "[empinfo]", schema = "[dbo]" )
public class salsum {
public String location
public String dept;
public double salary;
public salsum(String location, String dept, double salary)
{this.location = location;
this.dept = this.dept;
this.salary = this.salary;
}
}
並在查詢中添加new:
Query query = em.createQuery("SELECT new salsum(e.location, e.dept, e.salary) FROM salsum e");
謝謝並恭祝安康,
Nirav
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.