3

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

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

事件类型 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();
}
4

1 回答 1

2

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

于 2013-07-24T13:44:21.383 回答