Ami*_*Ami 6 android json retrofit
我正在使用Retrofit来解析 JSON。我在解析 JSON 响应时遇到异常。我的响应是动态的,这意味着当我获得成功响应时,响应键是成功的,但是当我获得失败响应时,它会变成错误。我如何解析该响应?
当我得到失败响应时,它会给我一个正确的结果,但是当我得到成功响应时,它将以失败告终,并给我一个例外Expected JsonObject but was JsonPrimitive。
小智 6
我遇到了类似的问题,服务器有时返回 JsonObject,有时返回 JsonPrimitive。当返回 JsonPrimitive 时,我得到 200 OK 但它仍然以 onFailure 结束,因为类型不同(它期望一个 JsonObject 但找到一个 JsonPrimitive)。
public final class JsonPrimitive extends JsonElement
public final class JsonObject extends JsonElement
Run Code Online (Sandbox Code Playgroud)
com.google.gson 文档指出 Booth JsonPrimitive 和 JsonObject 扩展了 JsonElement 那么为什么不这样做:
JsonObject jsonObject = createJsonObject();
Call<JsonElement> requestCall = SomeInterface.sendRequest(jsonObject);
requestCall.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
//Now when you get a JsonPrimitive it will still end up here because
//JsonPrimitive extends JsonElement
}
@Override
public void onFailure(Call<JsonElement> call, Throwable t) {
}
}
Run Code Online (Sandbox Code Playgroud)
Jsonobject 和 jsonprimitive 是不同类型的。
JsonObject { "name":"John", "age":30, "car":null }
JsonPrimitive(字符串、数字、布尔值)
你的反应模型是错误的。尝试这个 。
http://www.jsonschema2pojo.org/