如何使用GSON解析JSON获取cssvalidation与result对应字段数据
问题原因及解决方案
你解析失败的核心原因有两个:
- 字段名不匹配:JSON根节点下的目标键为
cssvalidation,但你定义的ApiResponse类中对应字段命名为validation,GSON默认严格匹配字段名,映射失败无法正常解析。 - 缺少嵌套结构映射:你需要提取的
result键对应嵌套JSON结构,但你编写的CssValidation类中没有定义对应的result字段和映射类。
正确实现代码
1. 实体类定义
// 根响应类 public class ApiResponse { // 字段名与JSON键保持一致,也可使用@SerializedName注解自定义字段名 private CssValidation cssvalidation; public CssValidation getCssvalidation() { return cssvalidation; } }
// cssvalidation节点映射类 public class CssValidation { private String uri; private String checkedby; private String csslevel; private String date; private String timestamp; private Boolean validity; // 映射result嵌套节点 private Result result; // 各字段的getter方法 public String getUri() { return uri; } public String getCheckedby() { return checkedby; } public String getCsslevel() { return csslevel; } public String getDate() { return date; } public String getTimestamp() { return timestamp; } public Boolean getValidity() { return validity; } public Result getResult() { return result; } // result节点映射类 public static class Result { private Integer errorcount; private Integer warningcount; public Integer getErrorcount() { return errorcount; } public Integer getWarningcount() { return warningcount; } } }
2. 解析取值代码
Gson gson = new Gson(); ApiResponse apiResponse = gson.fromJson(response.body().string(), ApiResponse.class); // 获取cssvalidation对象 CssValidation cssValidation = apiResponse.getCssvalidation(); // 获取result对象 CssValidation.Result result = cssValidation.getResult(); // 提取具体数值 int errorCount = result.getErrorcount(); int warningCount = result.getWarningcount();
可选优化
如果你不想修改字段名和JSON键保持一致,可以使用GSON提供的@SerializedName注解手动绑定映射关系,示例如下:
public class ApiResponse { @SerializedName("cssvalidation") private CssValidation validation; // 字段名可自定义,只要注解绑定正确即可 public CssValidation getValidation() { return validation; } }
内容的提问来源于stack exchange,提问作者user3058963
相关产品推荐
相关产品推荐

