GSON解析阵列
问题描述:
我得到它可能是两GSON解析阵列
"data": [
{
"uuid": ".......",
"error": true,
"code": 142,
"text": "Invalid uuid"
}
]
或
"data": {
"download_url": "http://....."
}
以分析它在我的应用程序一个I与改型得到它作为一个对象的响应
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
在此列中,“Invalid uuid”字符串中有一个空格。
任何人都知道如何解决这个问题?或者正确解析不同类型的响应?
谢谢
答
你的第一个JSON的例子是不是一个JSON名单,但名单与作为一个孩子的JSON对象。
您应该创建表示JSON结构一个新的类,像这样:
public class DownloadFileDataError {
private downloadFileDataErrorFields data;
public DownloadFileDataError() {
}
public String getFields() {
return data;
}
}
然后反序列化这样的:
DownloadFileDataError error = new Gson().fromJson(response.getData().toString());
第一个JSON是无效的。 –