我创建了一个api服务接口
package com.rohitkhatri.app.services;
import com.rohitkhatri.app.models.Login;
import com.rohitkhatri.app.models.User;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface ApiService {
@POST("user/authenticate")
Call<User> login(@Body Login login);
}
package com.rohitkhatri.app.models;
import com.google.gson.annotations.SerializedName;
public class Login {
@SerializedName("country_code")
private String countryCode;
@SerializedName("mobile_no")
private String mobileNo;
private String otp;
public Login(String countryCode, String mobileNo, String otp) {
this.countryCode = countryCode;
this.mobileNo = mobileNo;
this.otp = otp;
}
public String getCountryCode() {
return countryCode;
}
public String getMobileNo() {
return mobileNo;
}
public String getOtp() {
return otp;
}
}
这是api所需的请求参数:
{
"country_code": "91",
"mobile_no": "9XXXXXXXXX",
"otp": "348783"
}
但是当我记录请求时,它会发送以下json作为正文
{"countryCode":"91","mobileNo":"9XXXXXXXXX","otp":"348783"}
因为java对象中的名称不同,并且api调用需要该名称,所以它给出了错误。
有没有办法在调用中使用@SerializedName
注释或任何其他方式更改它?
我的问题是,当我们使用此模型作为呼叫的响应时,它正在工作,但如果我想发送呼叫并传递此对象,则发送数据不包含序列化名称字段。
答案 0 :(得分:1)
也使用@Expose注释。它经常被遗忘使用。