簡體   English   中英

播放框架:JSON

[英]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;
}

希望這可以幫助。 請查看此以獲取更多信息:

http://www.javacreed.com/gson-annotations-example/

問題已解決。 我在上面的代碼中做了以下更改:

在模型類中添加構造函數:

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM