当空字段包含子字段时,java GSON转换错误
我正在尝试使用第2和GSON解析来自Wordpress plugins API的JSON结果。我使用众所周知的website生成了我的POJO,并将其修改为以下模型:
PluginsApiResponse。java
public class PluginsApiResponse {
@SerializedName("plugins")
@Expose
private List<Plugin> plugins = null;
public List<Plugin> getPlugins() {
return plugins;
}
public void setPlugins(List<Plugin> plugins) {
this.plugins = plugins;
}
}
插件。java
public class Plugin {
@SerializedName("name")
@Expose
private String name;
@SerializedName("homepage")
@Expose
private String homepage;
@SerializedName("screenshots")
@Expose
private Screenshots screenshots;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHomepage() {
return homepage;
}
public void setHomepage(String homepage) {
this.homepage = homepage;
}
public Screenshots getScreenshots() {
return screenshots;
}
public void setScreenshots(Screenshots screenshots) {
this.screenshots = screenshots;
}
}
截图。java
public class Screenshots {
@SerializedName("1")
@Expose
private com.dkalsan.retrofitwordpress._1 _1;
@SerializedName("2")
@Expose
private com.dkalsan.retrofitwordpress._2 _2;
@SerializedName("3")
@Expose
private com.dkalsan.retrofitwordpress._3 _3;
public com.dkalsan.retrofitwordpress._1 get1() {
return _1;
}
public void set1(com.dkalsan.retrofitwordpress._1 _1) {
this._1 = _1;
}
public com.dkalsan.retrofitwordpress._2 get2() {
return _2;
}
public void set2(com.dkalsan.retrofitwordpress._2 _2) {
this._2 = _2;
}
public com.dkalsan.retrofitwordpress._3 get3() {
return _3;
}
public void set3(com.dkalsan.retrofitwordpress._3 _3) {
this._3 = _3;
}
}
\u 1。java(_2.java和_3.java完全相同)
public class _1 {
@SerializedName("src")
@Expose
private String src;
@SerializedName("caption")
@Expose
private String caption;
public String getSrc() {
return src;
}
public void setSrc(String src) {
this.src = src;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this.caption = caption;
}
}
如果屏幕截图字段不包含任何条目,则会出现问题。我已经设置了HttpLoggingInterceptor,它完整地记录响应代码200和json。根据下面的article,我还排除了互联网连接问题的可能性。如果我从模型中删除screenshots字段,解析就不会有问题。由于GSON试图反序列化不存在的字段1、2和3,错误是否可能持续存在?如果是,如何处理
# 1 楼答案
原来问题出在JSON响应格式上。如果没有截图,它将被格式化为JSON数组,否则它将被格式化为包含对象1、2、3等的JSON对象。我已经按照this stackoverflow question上的答案解决了这个问题