2016-04-18 3 views
-1

Ich sehe eine leere Antwort "{}", wenn ich die unten ausführen. Die Mitarbeiterklasse hat eine Liste, von der ich annehme, dass sie das Problem verursacht. Bitte kannst du mich wissen lassen, wie ich das überwinden kann?GSON - Konvertieren Objekt, das eine generische Liste in JSON String hat

public class ServiceValidationTest { 

private Gson gson; 

public ServiceValidationTest() { 
    this.setGson(new GsonBuilder() 
      .excludeFieldsWithoutExposeAnnotation() 
      .registerTypeHierarchyAdapter(byte[].class, 
        new GsonByteArrayHandler()) 
      .registerTypeHierarchyAdapter(boolean.class, 
        new GsonBooleanHandler()) 
      .registerTypeHierarchyAdapter(Date.class, 
        new GsonDateHandler()) 
      .create()); 
} 

public static void main(String[] args) throws Exception{ 

    List<Grade> grades = new ArrayList<Grade>(); 
    grades.add(new Grade("1")); 
    grades.add(new Grade("2")); 
    grades.add(new Grade("3")); 
    grades.add(new Grade("4")); 

    Employee employee = new Employee(); 
    employee.setGrades(grades); 
    employee.setName("someone"); 

    System.out.println(new ServiceValidationTest().getGson().toJson(employee)); 

} 

public Gson getGson() { 
    return gson; 
} 

public void setGson(Gson gson) { 
    this.gson = gson; 
} 

}

Mitarbeiter Klasse

package com.test; 

import java.util.List; 

public class Employee { 

    private String name; 
    private List<Grade> grades; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public List<Grade> getGrades() { 
     return grades; 
    } 
    public void setGrades(List<Grade> grades) { 
     this.grades = grades; 
    } 
} 

Grade

package com.test; 

public class Grade { 



    public Grade(String grade) { 
     super(); 
     this.grade = grade; 
    } 

    private String grade; 

    public String getGrade() { 
     return grade; 
    } 

    public void setGrade(String grade) { 
     this.grade = grade; 
    } 



} 

EDIT

Ich habe herausgefunden, dass der folgende Code das Problem verursacht. Wenn, wenn neue Gson erklären() und das Gson Objekt verwenden, wird es wie erwartet -

 this.setGson(new GsonBuilder() 
      .excludeFieldsWithoutExposeAnnotation() 
      .registerTypeHierarchyAdapter(byte[].class, 
        new GsonByteArrayHandler()) 
      .registerTypeHierarchyAdapter(boolean.class, 
        new GsonBooleanHandler()) 
      .registerTypeHierarchyAdapter(Date.class, 
        new GsonDateHandler()) 
      .create()); 

Antwort

0

Die Frage nach excludeFieldsWithoutExposeAnnotation verursacht wurde(), die den allen Bereichen wurde ohne die nicht kommentiert wurden nicht serialisiert werden. Als ich die Annotation ähnlich der unten aufgeführten hinzugefügt habe, wurden die Felder serialisiert.

EMPLOYEE

package com.test; 

import java.util.List; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Employee { 

    @Expose @SerializedName("NAME") 
    private String name; 
    @Expose @SerializedName("GRADES") 
    private List<Grade> grades; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public List<Grade> getGrades() { 
     return grades; 
    } 
    public void setGrades(List<Grade> grades) { 
     this.grades = grades; 
    } 
} 

GRADE

package com.test; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Grade { 



    public Grade(String grade) { 
     super(); 
     this.grade = grade; 
    } 

    @Expose @SerializedName("GRADE") 
    private String grade; 

    public String getGrade() { 
     return grade; 
    } 

    public void setGrade(String grade) { 
     this.grade = grade; 
    } 



} 
Verwandte Themen