我正在尝试使用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();
}
答案 0 :(得分:2)
您的json为字段location
提供了值,但您的类LocationWrapper
有一个名为locationList
的字段,因此不匹配。重命名字段或使用@SerializedName
。