2017-01-13 4 views
2

Я не получаю ответ JSON, который мне нужен, поэтому его трудно использовать через AngularJS. Ниже приведен код и требуемый вывод.Play Framework: JSON

@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

ответ

0

Проблема решена. Я сделал следующие изменения в коде выше:

Добавить конструктор в классе модели:

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

     } 

} 

и в запросе добавить новые:

Query query = em.createQuery("SELECT new salsum(e.location, e.dept, e.salary) FROM salsum e"); 

Спасибо и наилучшими пожеланиями,

Nirav

0

Я считаю, что вам нужно чтобы попытаться добавить @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/

Смежные вопросы