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

Android Retrofit:如何将API响应JSON的itemcode存储为字符串数组

解决方案:创建Retrofit Model类并提取itemcode字符串数组

1. 定义对应JSON结构的Model类

我们需要两个Model类匹配返回的JSON结构,同时在顶层类中添加方法直接提取itemcode为字符串数组。

ListItem实体类(对应listitem数组中的单个对象)

public class ListItem {
    @SerializedName("itemcode")
    private String itemCode;

    public String getItemCode() {
        return itemCode;
    }

    public void setItemCode(String itemCode) {
        this.itemCode = itemCode;
    }
}

顶层ApiResponse类(对应整个JSON响应)

import com.google.gson.annotations.SerializedName;
import java.util.List;

public class ApiResponse {
    @SerializedName("status")
    private boolean status;
    @SerializedName("pesan")
    private String message;
    @SerializedName("username")
    private String username;
    @SerializedName("aktif_sampai")
    private String activeUntil;
    @SerializedName("is_mobile")
    private String isMobile;
    @SerializedName("listitem")
    private List<ListItem> listItemList;

    // Getter和Setter方法
    public boolean isStatus() { return status; }
    public void setStatus(boolean status) { this.status = status; }
    public String getMessage() { return message; }
    public void setMessage(String message) { this.message = message; }
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
    public String getActiveUntil() { return activeUntil; }
    public void setActiveUntil(String activeUntil) { this.activeUntil = activeUntil; }
    public String getIsMobile() { return isMobile; }
    public void setIsMobile(String isMobile) { this.isMobile = isMobile; }
    public List<ListItem> getListItemList() { return listItemList; }
    public void setListItemList(List<ListItem> listItemList) { this.listItemList = listItemList; }

    // 直接提取itemcode为字符串数组的方法
    public String[] getItemCodeArray() {
        if (listItemList == null || listItemList.isEmpty()) {
            return new String[0];
        }
        String[] itemCodes = new String[listItemList.size()];
        for (int i = 0; i < listItemList.size(); i++) {
            itemCodes[i] = listItemList.get(i).getItemCode();
        }
        return itemCodes;
    }
}

2. 在Retrofit请求中使用并获取字符串数组

假设你已定义ApiService接口,在请求回调中可直接调用getItemCodeArray()获取可用的字符串数组:

apiService.getItems().enqueue(new Callback<ApiResponse>() {
    @Override
    public void onResponse(Call<ApiResponse> call, Response<ApiResponse> response) {
        if (response.isSuccessful() && response.body() != null) {
            // 直接拿到itemcode字符串数组
            String[] itemCodeArray = response.body().getItemCodeArray();
            
            // 示例:遍历数组使用数据
            for (String code : itemCodeArray) {
                // 处理每个itemcode,比如打印或存入集合
            }
        }
    }

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

关键说明

  • 使用@SerializedName注解保证JSON字段与Java字段的映射正确性,避免因命名不一致导致解析失败
  • getItemCodeArray()方法封装了提取逻辑,调用时无需手动遍历集合,直接得到可用的字符串数组
  • 如果使用Moshi等其他JSON解析库,只需替换对应的字段注解,核心提取逻辑保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:31:02