2016-09-23 116 views
0

我得到它可能是两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”字符串中有一个空格。

任何人都知道如何解决这个问题?或者正确解析不同类型的响应?

谢谢

+1

第一个JSON是无效的。 –

回答

0

你的第一个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());