使用GSON的JSON到POJO

时间:2013-07-24 13:23:38

标签: json gson pojo

我正在尝试使用GSON将JSON对象转换为POJO。虽然我没有得到任何错误/异常,但封装类中的List对象最终仍为null。任何想法都是我做错了

JSON字符串

  {
   "location":[
      {
         "id":"1",
         "locationName":"Location 1",
         "eventType":[
            {
               "id":"1",
               "eventName":"Event 1"
            },
            {
               "id":"2",
               "eventName":"Event 2"
            },
            {
               "id":"3",
               "eventName":"Event 3"
            }
         ]
      },
      {
         "id":"2",
         "locationName":"Location 2",
         "eventType":[
            {
               "id":"4",
               "eventName":"Event 4"
            },
            {
               "id":"5",
               "eventName":"Event 5"
            },
            {
               "id":"6",
               "eventName":"Event 6"
            }
         ]
      },
      {
         "id":"3",
         "locationName":"Location 3",
         "eventType":[
            {
               "id":"7",
               "eventName":"Event 7"
            },
            {
               "id":"8",
               "eventName":"Event 8"
            },
            {
               "id":"9",
               "eventName":"Event 9"
            }
         ]
      }
   ]
}

与GSON一起使用的Wrapper类

public class LocationWrapper {

    public List<Location> locationList;

    public List<Location> getLocationList() {
        return locationList;
    }

    public void setLocationList(List<Location> locationList) {
        this.locationList = locationList;
    }


}

位置POJO

public class Location  {

    private long id;
    private String locationName;
    private List<EventType> eventTypeList;

    public Location() {

    }

    public Location(long id, String locationName, ArrayList<EventType> eventTypeList) {
        this.id = id;
        this.locationName = locationName;
        this.eventTypeList = eventTypeList;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getLocationName() {
        return locationName;
    }

    public void setLocationName(String locationName) {
        this.locationName = locationName;
    }

    public List<EventType> getEventTypeList() {
        return eventTypeList;
    }

    public void setEventTypeList(List<EventType> eventTypeList) {
        this.eventTypeList = eventTypeList;
    }
}

EventType POJO

public class EventType  {


    private long id;
    private String eventName;

    public EventType() {
    }

    public EventType(long id, String eventName) {
        this.id = id;
        this.eventName = eventName;
    }

    public EventType(int id, String eventName) {
        this.id = id;
        this.eventName = eventName;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getEventName() {
        return eventName;
    }

    public void setEventName(String eventName) {
        this.eventName = eventName;
    }
}

我正在使用的方法

private void parseGSONfile(String fileName) {


        Gson gson = new Gson();

            //getting string from file, you can insert the above string here
        String json = new JSONParser().getJSONStringFromFile(fileName); 

        List<Location> locationList;
        LocationWrapper locationWrapper = null;


        try {

              locationWrapper = gson.fromJson(json, LocationWrapper.class);

        } catch (Exception e) {
        }

            //here the contained object locationList is still null
        locationList = locationWrapper.getLocationList();
}

1 个答案:

答案 0 :(得分:2)

您的json为字段location提供了值,但您的类LocationWrapper有一个名为locationList的字段,因此不匹配。重命名字段或使用@SerializedName