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

Android中Retrofit无法生成JSON Schema?如何用jsonschema2pojo创建Java模型类

解决Retrofit2下二维JSON数组的Java模型创建问题

你的JSON是二维字符串数组结构,不用纠结jsonschema2pojo的空白问题,直接用下面两种方案处理:

方案1:直接用通用集合接收

Retrofit2支持直接用List<List<String>>作为返回类型,不需要额外写模型类。

定义接口:

public interface MinisterApi {
    @GET("你的接口地址")
    Call<List<List<String>>> getMinisters();
}

调用后,返回的列表里第一个元素是表头,剩下的都是数据行,你可以自己按需处理表头和数据的对应关系。

方案2:封装成实体类(更面向对象)

如果想把数据封装成实体类,需要先解析成二维数组,再手动映射到实体对象:

1. 编写Minister实体类

public class Minister {
    private String serialNumber;
    private String name;
    private String portfolio;
    private String contactNumber;
    private String proName;
    private String proContact;
    private String proContactNumber;

    // 带参构造方法
    public Minister(String serialNumber, String name, String portfolio, String contactNumber, 
                    String proName, String proContact, String proContactNumber) {
        this.serialNumber = serialNumber;
        this.name = name;
        this.portfolio = portfolio;
        this.contactNumber = contactNumber;
        this.proName = proName;
        this.proContact = proContact;
        this.proContactNumber = proContactNumber;
    }

    // 自行补充getter、setter方法
}

2. 解析并转换数据

在Retrofit的回调里处理数据映射:

call.enqueue(new Callback<List<List<String>>>() {
    @Override
    public void onResponse(Call<List<List<String>>> call, Response<List<List<String>>> response) {
        if (response.isSuccessful() && response.body() != null) {
            List<List<String>> rawData = response.body();
            List<Minister> ministerList = new ArrayList<>();
            
            // 跳过第一行表头,遍历数据行
            for (int i = 1; i < rawData.size(); i++) {
                List<String> row = rawData.get(i);
                Minister minister = new Minister(
                    row.get(0),
                    row.get(1),
                    row.get(2),
                    row.get(3),
                    row.get(4),
                    row.get(5),
                    row.get(6)
                );
                ministerList.add(minister);
            }
            
            // 这里就拿到了封装好的实体列表,后续按需使用
        }
    }

    @Override
    public void onFailure(Call<List<List<String>>> call, Throwable t) {
        // 处理请求失败逻辑
    }
});

关于jsonschema2pojo空白的说明

这个工具对纯数组结构的JSON兼容性较差,所以才会返回空白页面,用上面的方案完全可以满足你的需求,不需要依赖它。

内容的提问来源于stack exchange,提问作者Attaullah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:55:19