Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在第二版中使用jsonapi?_Java_Android_Retrofit_Json Api_Moshi - Fatal编程技术网

Java 如何在第二版中使用jsonapi?

Java 如何在第二版中使用jsonapi?,java,android,retrofit,json-api,moshi,Java,Android,Retrofit,Json Api,Moshi,我需要改型2。我试过了,但我不能用moshi ConverterFactory TokenModel.java @JsonApi(type = "tokens") public class TokenModel extends Resource { @Json(name = "cell_phone") public String cellPhone; } TestService.java: public interface TestService { @POST("to

我需要改型2。我试过了,但我不能用moshi ConverterFactory

TokenModel.java

@JsonApi(type = "tokens")
public class TokenModel extends Resource {
    @Json(name = "cell_phone")
    public String cellPhone;
}
TestService.java:

public interface TestService {
    @POST("token")
    Call<TokenModel> newOtp(@Body TokenModel tokenModel);
}
如果我使用
MoshiConverterFactory
出错
无法为com.xxx.xxx.model.TokenModel类创建转换器

使用改装:

TsetProvider testProvider = new TestProvider();
TestService testService = testProvider.getTestService();

TokenModel tokenModel = new TokenModel();
tokenModel.cellPhone = "121212129999";

Call<TokenModel> call = testService.newOtp(tokenModel);
call.enqueue(new Callback<TokenModel>() {
    @Override
    public void onResponse(Call<TokenModel> call, Response<TokenModel> response) {
    }

    @Override
    public void onFailure(Call<TokenModel> call, Throwable t) {
    }
});
TsetProvider testProvider=new testProvider();
TestService TestService=testProvider.getTestService();
TokenModel TokenModel=新的TokenModel();
tokenModel.mobile=“1212129999”;
Call Call=testService.newOtp(令牌模型);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
从文档中,您需要将库工厂添加到moshi实例:

// First create the factory
JsonAdapter.Factory jsonApiAdapterFactory = ResourceAdapterFactory.builder()
  .add(TokenModel.class)
  .build();

// Create a custom moshi instacne
Moshi moshi = new Moshi.Builder()
  .add(jsonApiAdapterFactory)
  .build();

// Add the custom moshi instance to Retrofits Converter Factory
Retrofit refRetrofit = new Retrofit.Builder()
  .baseUrl(ClientConfigs.BASE_URL)
  .client(httpClient)
  .addConverterFactory(MoshiConverterFactory.create(moshi))
  .build();

这应该可以解决问题。

谢谢。你的代码解决了这个问题。我发现另一个答案与你的答案相同。
// First create the factory
JsonAdapter.Factory jsonApiAdapterFactory = ResourceAdapterFactory.builder()
  .add(TokenModel.class)
  .build();

// Create a custom moshi instacne
Moshi moshi = new Moshi.Builder()
  .add(jsonApiAdapterFactory)
  .build();

// Add the custom moshi instance to Retrofits Converter Factory
Retrofit refRetrofit = new Retrofit.Builder()
  .baseUrl(ClientConfigs.BASE_URL)
  .client(httpClient)
  .addConverterFactory(MoshiConverterFactory.create(moshi))
  .build();