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
相关产品推荐
相关产品推荐

