我是这样调用方法的:
货币汇率反序列化器是一个 com.google.gson.JsonDeserializer。
GsonBuilder gsonBuilder = new GsonBuilder()
.registerTypeAdapter(CoindeskRateResult.class, CurrencyRateDeserializer.class)
货币汇率反序列化器是一个 com.google.gson.JsonDeserializer。
import com.google.gson.JsonDeserializer;
public class CurrencyRateDeserializer implements JsonDeserializer<CoindeskRateResult> {
@Override
public CoindeskRateResult deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context)
throws JsonParseException {
CoindeskRateResult result = new CoindeskRateResult();
return result;
}
}
错误出现在GsonBuilder
类中。我知道typeAdapter
是JsonDeserializer<?>
的一个实例,但$Gson$Preconditions.checkArgument
会抛出一个IllegalArgumentException
public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter) {
$Gson$Preconditions.checkArgument(typeAdapter instanceof JsonSerializer<?>
|| typeAdapter instanceof JsonDeserializer<?>
|| typeAdapter instanceof InstanceCreator<?>
|| typeAdapter instanceof TypeAdapter<?>);
....
堆栈跟踪:
*Caused by: java.lang.IllegalArgumentException
at com.google.gson.internal.$Gson$Preconditions.checkArgument($Gson$Preconditions.java:46)
at com.google.gson.GsonBuilder.registerTypeAdapter(GsonBuilder.java:472)*
.....
我的CoindeskRateResult类:
public class CoindeskRateResult {
public Map<String, String> data = new HashMap<>();
}