2016-11-15 10 views
0

iは、データのI /レジスタのいずれかで、それらのデータ1を保存したいリストにある各オブジェクトを特定のDTO/POJOクラスに変換する方法は?

に保存されてangularjsからJSONオブジェクトを渡していますが、コントローラはforechループ内来ていません。

DTOの各プロパティを設定する必要があります。私のJSONオブジェクトキーとDTOプロパティ名が同じであれば、簡単に変換できますか?

@ResponseBody 
    @RequestMapping(value = "/registerStudent.do", method = RequestMethod.POST) 
    public boolean registerStudent(@RequestBody String data) { 

     Gson googleJson = new Gson(); 

     ArrayList<StudentDTO> stdList = googleJson.fromJson(data, ArrayList.class); 

     if (stdList != null) { 

      for (StudentDTO stdObj : stdList) { 

       registerService.register(stdObj); 
      } 

     } 
     return registerService.isStudentExist(stdList); 

    } 

私のJSONオブジェクトは、そのようなものです:

[{fname=Karmesh, lname=Madhavi, gender=Male, dob=2016-11-07T18:30:00.000Z, [email protected], contact=1234567890, yop=2020, degree=M.Sc, branch=CS, perc=78, state=Karnataka, city=Bangalore}] 

私StudentDTOはそのようなものです:

@Entity 
@Table(name = "student_table") 
public class StudentDTO implements Serializable { 

    @Id 
    @GenericGenerator(name = "incre", strategy = "increment") 
    @GeneratedValue(generator = "incre") 
    @Column(name = "s_id") 
    @NotNull 
    private int sid; 

    @Column(name = "s_fname") 
    @NotNull 
    @Size(min = 3, max = 20) 
    private String fname; 

    @Column(name = "s_lname") 
    @NotNull 
    private String lname; 

    @Column(name = "s_gender") 
    @NotNull 
    private String gender; 

    @Column(name = "s_dob") 
    private Date dob; 

    @Column(name = "s_email") 
    @NotNull  
    private String email; 

    @Column(name = "_scontact") 
    @NotNull @Pattern(regexp="\\d{10}") 
    private String contact; 

    @Column(name = "s_yop") 
    @NotNull @Min(4) @Max(4) 
    private int yop; 

    @Column(name = "s_degree") 
    @NotNull 
    private String degree; 

    @Column(name = "s_branch") 
    @NotNull 
    private String branch; 

    @Column(name = "s_perc") 
    @NotNull @Digits(integer=2, fraction=2) 
    private double perc; 

    @Column(name = "s_state") 
    @NotNull 
    private String state; 

    @Column(name = "s_city") 
    @NotNull 
    private String city; 

    public StudentDTO() { 
     System.out.println(this.getClass().getSimpleName() + "created.."); 
    } 

    public String getFname() { 
     return fname; 
    } 

    public void setFname(String fname) { 
     this.fname = fname; 
    } 

    public String getLname() { 
     return lname; 
    } 

    public void setLname(String lname) { 
     this.lname = lname; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public int getSid() { 
     return sid; 
    } 

    public void setSid(int sid) { 
     this.sid = sid; 
    } 

    public String getGender() { 
     return gender; 
    } 

    public void setGender(String gender) { 
     this.gender = gender; 
    } 

    public Date getDob() { 
     return dob; 
    } 

    public void setDob(Date dob) { 
     this.dob = dob; 
    } 

    public int getYop() { 
     return yop; 
    } 

    public void setYop(int yop) { 
     this.yop = yop; 
    } 

    public String getDegree() { 
     return degree; 
    } 

    public void setDegree(String degree) { 
     this.degree = degree; 
    } 

    public String getBranch() { 
     return branch; 
    } 

    public void setBranch(String branch) { 
     this.branch = branch; 
    } 

    public double getPerc() { 
     return perc; 
    } 

    public void setPerc(double perc) { 
     this.perc = perc; 
    } 

    public String getState() { 
     return state; 
    } 

    public void setState(String state) { 
     this.state = state; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    @Override 
    public String toString() { 
     return "StudentDTO [sid=" + sid + ", fname=" + fname + ", lname=" + lname + ", gender=" + gender + ", dob=" 
       + dob + ", email=" + email + ", yop=" + yop + ", degree=" + degree + ", branch=" + branch + ", perc=" 
       + perc + ", state=" + state + ", city=" + city + "]"; 
    } 

} 

答えて

0

は、私はそれが以下の例外を投げていると思います。

Exception in thread "main" java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.example.model.StudentDTO 

ソリューション: -

変更この文から: -

ArrayList<StudentDTO> stdList = gson.fromJson(data, ArrayList.class); 

へ: -

List<StudentDTO> stdList = gson.fromJson(data, new TypeToken<ArrayList<StudentDTO>>() {}.getType()); 

このSH ouldは問題を解決します。それは私のために働いた。

関連する問題