我在使用GSON阅读我的API响应JSON时遇到了一些麻烦。
我的API数据返回一个带有状态代码,消息和数据对象的对象。
我与GSON的问题在于,我无法弄清楚如何正确使用它。
例如,我的API响应可能如下所示。
{
"code": 200,
"message": "",
"data": {
"auth_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"points": 42850
}
}
或
{
"code": 200,
"message": "",
"data": {
"items": [
{
"title" : "value"
},
{
"title" : "value"
}
]
}
}
或其他人
第一个响应是登录响应,它将是一个LoginResponse.class类
public class LoginResponse {
private String auth_token;
private int points;
public String getAuthToken(){
return auth_token;
}
public int getPoints(){
return points;
}
}
我要用
LoginResponse response = gson.fromJson(json, LoginResponse.class);
但是,我如何创建一个类,以便可以访问状态代码,消息和数据? (可能是我的任何响应类)
我看过TypeAdapterFactory和JsonDeserializer,但无法理解它。
所以,如果有人能找到回答这个问题的答案,那就太棒了,因为我找不到答案,或者你知道如何做到这一点。
答案 0 :(得分:1)
您可以正常使用代码和消息,然后data
可能是Map<String, Object>
,您必须在运行时解释,具体取决于代码或用于区分响应应如何显示的任何内容
答案 1 :(得分:0)
您可以通过以下方式解决此问题:
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
JsonParser parser = new JsonParser();
JsonObject rootObejct = parser.parse(json).getAsJsonObject();
JsonElement dataElement = rootObejct.get("data");
LoginResponse response = gson.fromJson(dataElement, LoginResponse.class);