我得到的回复可能是两个中的一个
"data": [
{
"uuid": ".......",
"error": true,
"code": 142,
"text": "Invalid uuid"
}
]
或
"data": {
"download_url": "http://....."
}
为了在我的应用程序中解析它,我将它作为对象进行改造
public class downloadFileResponse extends generalStatusResponse {
Object data;
public Object getData() {
return data;
}
}
并尝试像这样解析它
if (response.getStatus().getCode().equals("136")) {
String res = new Gson().toJson(response.getData());
try {
JSONObject t = new JSONObject(res);
Log.v("this", "r- " + t.getString("download_url"));
} catch (Exception e) {
}
} else {
try {
List<downloadFileDataErrorFields> error = new Gson().fromJson(response.getData().toString(), new TypeToken<List<downloadFileDataErrorFields>>() { }.getType());
} catch (Exception e) {
e.printStackTrace();
}
}
我的downloadFileDataErrorFields对象就是这个
public class downloadFileDataErrorFields {
String uuid;
String error;
String code;
String text;
public downloadFileDataErrorFields() {
}
public String getUuid() {
return uuid;
}
public String getError() {
return error;
}
public String getCode() {
return code;
}
public String getText() {
return text;
}
}
只有download_url的第二个响应它工作正常,但是当我尝试用错误解析第一个时我得到了这个
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 87 path $[0].text
在此列中“无效的uuid”字符串中有一个空格。
任何人都知道如何解决这个问题?或者正确解析不同类型的回复?
谢谢
答案 0 :(得分:0)
您的第一个JSON示例不是json列表,而是带有list作为子项的json对象。
您应该创建一个表示该JSON结构的新类,如下所示:
public class DownloadFileDataError {
private downloadFileDataErrorFields data;
public DownloadFileDataError() {
}
public String getFields() {
return data;
}
}
然后将其反序列化:
DownloadFileDataError error = new Gson().fromJson(response.getData().toString());