你好,我在解析json响应时遇到异常 我的响应是动态意味着当我获得成功响应键成功但是当我得到失败响应它转向错误我如何解析该响应 我正在使用改装来解析json
当我得到失败的反应时,我得到了正确的结果,但是当我得到成功的反应时,它会失败,并且给我一个例外“被视为JsonObject但是JsonPrimitive ”
给我解决方案 感谢
答案 0 :(得分:3)
嗨,我有一个类似的问题,服务器有时返回一个JsonObject,有时返回一个JsonPrimitive。返回JsonPrimitive时,我得到了200 OK,但由于类型不同(它期望使用JsonObject但找到了JsonPrimitive ),它仍然以onFailure结尾。
public final class JsonPrimitive extends JsonElement
public final class JsonObject extends JsonElement
com.google.gson文档指出,展位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) {
}
}
答案 1 :(得分:1)
Jsonobject和jsonprimitive是彼此不同的类型。
JsonObject {“name”:“John”,“age”:30,“car”:null}
JsonPrimitive(string,number,boolean)
您的回复模型错误。试试这个。
答案 2 :(得分:0)
您的API响应是String,您尝试获取JsonObject。 在Postman中检查您的API,并确保API响应为JsonObject。