Java 安卓&x2B;改装2+;GSON=无法调用接口的无参数构造函数
我试图在我的应用程序中使用改型2,但出现以下错误:Java 安卓&x2B;改装2+;GSON=无法调用接口的无参数构造函数,java,android,retrofit,retrofit2,gson,Java,Android,Retrofit,Retrofit2,Gson,我试图在我的应用程序中使用改型2,但出现以下错误: java.lang.RuntimeException:无法为interface box.gov.br.ourapp.API.ClientePFApi调用任何参数构造函数。向Gson注册此类型的InstanceCreator可以解决此问题。 而且。。。我不知道哪里出了问题=/ 我的java类: 公共类客户PFVISAO360{ 私有静态最终长serialVersionUID=318272297876508581L; @序列化名称(“txCPF”)
java.lang.RuntimeException:无法为interface box.gov.br.ourapp.API.ClientePFApi调用任何参数构造函数。向Gson注册此类型的InstanceCreator可以解决此问题。
而且。。。我不知道哪里出了问题=/
我的java类:
公共类客户PFVISAO360{
私有静态最终长serialVersionUID=318272297876508581L;
@序列化名称(“txCPF”)
@暴露
公共字符串txCPF;
@序列化名称(“nuCocli”)
@暴露
公共长努科克利;
@序列化名称(“TXNOMECLIENT”)
@暴露
公共字符串TXNOMEclient;
@序列化名称(“dtNascimento”)
@暴露
公共字符串dtNascimento;
@SerializedName(“dtInicioRelacionamento”)
@暴露
公共字符串DTinicioRelacionNamento;
@SerializedName(“txSegmento”)
@暴露
公共字符串txSegmento;
@序列化名称(“txOcupacao”)
@暴露
公共字符串txOcupacao;
@SerializedName(“txSexo”)
@暴露
公共字符串txSexo;
@序列化名称(“txEstadoCivil”)
@暴露
公共字符串txEstadoCivil;
@序列化名称(“txNivelInstrucao”)
@暴露
公共字符串txNivelInstrucao;
@序列化名称(“txTipoPessoa”)
@暴露
公共字符串txTipoPessoa;
@SerializedName(“nuNacionalidade”)
@暴露
公共整数nuNacionalidade;
@序列化名称(“txnaturalde”)
@暴露
公共字符串TXD;
@序列化名称(“txNomePai”)
@暴露
公共字符串txNomePai;
@序列化名称(“txNomeMae”)
@暴露
公共字符串txNomeMae;
@SerializedName(“txDeficiencia”)
@暴露
公共字符串TXD缺陷;
@序列化名称(“尼可斯”)
@暴露
公共名单nichos;
@序列化名称(“变戏法”)
@暴露
公共召唤;
@序列化名称(“renda”)
@暴露
公共区域;
@序列化名称(“meiosComunicacao”)
@暴露
公共社区;
@序列化名称(“carteiraGRC”)
@暴露
公开名单;
//能手和二传手。。。。
公共客户PFVISAO360(){
}
我的界面:
公共接口ClientePFApi{
@获取(“clientepf/{user}”)
调用getClientePF(@Path(“user”)字符串user);
}
我怎么称呼这个:
OkHttpClient-okClient=new-OkHttpClient();
改装客户端=新建改装.Builder()
.baseUrl(API)
.客户(okClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
ClientePFApi服务=client.create(ClientePFApi.class);
Call Call=service.getClientePF(“bigua”);
call.enqueue(新回调(){
@凌驾
public void onResponse(@NonNull调用,@NonNull响应){
Log.e(“改装”、“正常”);
}
@凌驾
public void onFailure(@NonNull Call Call,@NonNull Throwable t){
Log.e(“trow”,t.toString());
Log.e(“改装”、“碰撞”);
}
});
从API接收到的JSON:
{“txCPF”:“1234567”,“nuCocli”:12345,“TXNOMEclient”:“bla”,“dtNascimento”:“12/11/1984”,“dtInicioRelacionamento”:“04/05/2010”,“txSegmento”:“bla”,“TXOCAPACAO”:“bla”,“TXSTADOCIVILI”:“bla”,“TXNIVELLINTRUCAO”:“bla”,“TXTIOPESOA”:“bla”,“NUNACIONALIALIDADE”:“null”,“txNomePai”:“DF”,“txNomePai”:“blah”,“TX”,“TXNOMECIONEME”:“bla”:“布拉”,“TX”和TX:null,“nichos”:null,“conguge”:null,“renda”:null,“meiosComunicacao”:null,“carteiraGRC”:null}
如果这是一个noob问题,我很抱歉,但我在这里读了很多问题,不知道哪里是我的错误
感谢您的帮助。我想这是个问题,因为您使用的
接口
类和您的模型
类的名称相同
这两个名称在这里都是相同的ClientePFApi
public interface ClientePFApi {
@GET("clientepf/{user}")
Call<ClientePFApi> getClientePF(@Path("user") String user);
}
哦…我明白了…,更改了,错误也更改了,但JSON似乎格式错误,新错误:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:Beging_数组,但在第1行第499列为字符串path$.nichosts这是因为在您的
clientpfvisao360
类nichos
和carte中出现的错误iraGRC
是列表对象,在您的Json
中包含该键的null
。要解决此问题,您需要将该键的null
替换为空数组[]
。
public interface ClientePFApi {
@GET("clientepf/{user}")
Call<ClientePFVisao360> getClientePF(@Path("user") String user);
}