package com.yutou.okhttp.converter; import com.google.gson.Gson; import com.google.gson.TypeAdapter; import com.google.gson.reflect.TypeToken; import retrofit2.Converter; import okhttp3.RequestBody; import okhttp3.ResponseBody; import org.jetbrains.annotations.Nullable; import retrofit2.Retrofit; import java.lang.annotation.Annotation; import java.lang.reflect.Type; public class JsonConverterFactory extends Converter.Factory { Gson gson; public static JsonConverterFactory create(Gson gson) { return new JsonConverterFactory(gson); } private JsonConverterFactory(Gson gson) { this.gson = gson; } @Nullable @Override public Converter requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { // return super.requestBodyConverter(type, parameterAnnotations, methodAnnotations, retrofit); TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); return new JsonRequestBodyConverter<>(gson,adapter); } @Nullable @Override public Converter responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { // return super.responseBodyConverter(type, annotations, retrofit); TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); return new JsonResponseBodyConverter<>(gson,adapter,type); } }