如何使用Retrofit2提交JSON格式的数组类型行数据
Retrofit2 提交目标JSON数组实现方案
1. 定义数据映射实体类
Java 版本
import com.google.gson.annotations.SerializedName; import java.util.Date; public class Beneficiary { @SerializedName("BeneficiaryNameID") private int beneficiaryNameID; @SerializedName("BeneficiaryName") private String beneficiaryName; @SerializedName("RFIDTag") private String rfidTag; @SerializedName("Village") private String village; @SerializedName("Faliya") private String faliya; @SerializedName("createDate") private Date createDate; @SerializedName("RehabStatus") private int rehabStatus; // 构造方法、getter、setter自行生成 public Beneficiary(int beneficiaryNameID, String beneficiaryName, String rfidTag, String village, String faliya, Date createDate, int rehabStatus) { this.beneficiaryNameID = beneficiaryNameID; this.beneficiaryName = beneficiaryName; this.rfidTag = rfidTag; this.village = village; this.faliya = faliya; this.createDate = createDate; this.rehabStatus = rehabStatus; } }
Kotlin 版本
import com.google.gson.annotations.SerializedName import java.util.Date data class Beneficiary( @SerializedName("BeneficiaryNameID") val beneficiaryNameID: Int, @SerializedName("BeneficiaryName") val beneficiaryName: String, @SerializedName("RFIDTag") val rfidTag: String, @SerializedName("Village") val village: String, @SerializedName("Faliya") val faliya: String, @SerializedName("createDate") val createDate: Date, @SerializedName("RehabStatus") val rehabStatus: Int )
2. 定义API请求接口
Java 版本
import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.POST; import java.util.List; public interface BeneficiaryApi { // 替换为实际的接口路径 @POST("api/beneficiary/submit") Call<Void> submitBeneficiaryList(@Body List<Beneficiary> beneficiaryList); }
Kotlin 版本
import retrofit2.http.Body import retrofit2.http.POST import retrofit2.Call interface BeneficiaryApi { // 替换为实际的接口路径 @POST("api/beneficiary/submit") fun submitBeneficiaryList(@Body beneficiaryList: List<Beneficiary>): Call<Void> }
3. 初始化Retrofit并发起请求
Java 版本
import com.google.gson.Gson; import com.google.gson.GsonBuilder; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Locale; public class RequestDemo { public void sendRequest() throws ParseException { // 配置Gson日期格式,匹配你需要的日期规则 Gson gson = new GsonBuilder() .setDateFormat("dd/M/yyyy hh:mm:ss a") .create(); // 初始化Retrofit,替换为实际的服务端根地址 Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://your-server-base-url.com/") .addConverterFactory(GsonConverterFactory.create(gson)) .build(); BeneficiaryApi api = retrofit.create(BeneficiaryApi.class); // 构造请求数据 SimpleDateFormat sdf = new SimpleDateFormat("dd/M/yyyy hh:mm:ss a", Locale.ENGLISH); List<Beneficiary> list = new ArrayList<>(); list.add(new Beneficiary(1, "Ronak", "00000001", "valsad", "valsad", sdf.parse("10/4/2021 2:57:31 PM"), 1)); list.add(new Beneficiary(2, "Rachna", "00000002", "gurgoun", "test", sdf.parse("10/4/2021 2:57:31 PM"), 2)); // 发起异步请求 api.submitBeneficiaryList(list).enqueue(new retrofit2.Callback<Void>() { @Override public void onResponse(Call<Void> call, retrofit2.Response<Void> response) { // 请求成功处理逻辑 } @Override public void onFailure(Call<Void> call, Throwable t) { // 请求失败处理逻辑 } }); } }
Kotlin 版本
import com.google.gson.GsonBuilder import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import java.text.SimpleDateFormat import java.util.* class RequestDemo { fun sendRequest() { // 配置Gson日期格式,匹配你需要的日期规则 val gson = GsonBuilder() .setDateFormat("dd/M/yyyy hh:mm:ss a") .create() // 初始化Retrofit,替换为实际的服务端根地址 val retrofit = Retrofit.Builder() .baseUrl("https://your-server-base-url.com/") .addConverterFactory(GsonConverterFactory.create(gson)) .build() val api = retrofit.create(BeneficiaryApi::class.java) // 构造请求数据 val sdf = SimpleDateFormat("dd/M/yyyy hh:mm:ss a", Locale.ENGLISH) val list = listOf( Beneficiary(1, "Ronak", "00000001", "valsad", "valsad", sdf.parse("10/4/2021 2:57:31 PM"), 1), Beneficiary(2, "Rachna", "00000002", "gurgoun", "test", sdf.parse("10/4/2021 2:57:31 PM"), 2) ) // 发起异步请求 api.submitBeneficiaryList(list).enqueue(object : retrofit2.Callback<Void> { override fun onResponse(call: retrofit2.Call<Void>, response: retrofit2.Response<Void>) { // 请求成功处理逻辑 } override fun onFailure(call: retrofit2.Call<Void>, t: Throwable) { // 请求失败处理逻辑 } }) } }
注意事项
- 代码里的服务端根地址、接口路径需要替换为你实际的业务地址
- 如果你不需要把createDate解析为Date类型,可以直接声明为String类型,不需要额外配置Gson的日期格式
- 确保你已经引入了Retrofit、Gson转换器的相关依赖
内容的提问来源于stack exchange,提问作者Deepika Singh
相关产品推荐
相关产品推荐

