使用GSON将JSON转换为POJO

3
我可以帮助您将JSON对象转换为POJO,使用GSON。尽管没有出现任何错误/异常,但包装类中的列表对象最终仍然为空。您有什么想法,我做错了什么?
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();
}
1个回答

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

没错,我在List<EventType>中的Location类也遇到了相同的错误。谢谢! - ChrisGeo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接