You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:54:04