我将一些数据发送到我的服务器并获得响应。
如果出现错误,则响应是类实例:
{
errorCode (int),
errorMsg (String)
}
在成功案例中,响应是一个项目数组。
我试图运行以下代码并收到错误:
代码:
private void afterServerOfferResponse(final Gson gson,
String result) {
ServerErrorMessage serverErrorMessage = gson.fromJson(
result, ServerErrorMessage.class);
if (serverErrorMessage.errorCode == 0) {
Type collectionType = new TypeToken<ArrayList<Offer>>() {
}.getType();
mOffersList = gson.fromJson(result, collectionType);
mAdapter = new ImageAdapter(OffersListActivity.this,
mOffersList);
mListView.setAdapter(mAdapter);
错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
如何在不更改服务器响应的情况下检查错误情况?
答案 0 :(得分:0)
添加try-catch
块来处理异常。只有在您尝试解析数据时,才会验证其是否有效JSON
响应或错误。
首先尝试解析Array Class
个实例以及JSON
异常,然后用ServerErrorMessage class
解析
像这样添加,并在Syntax Exception
try{
ServerErrorMessage serverErrorMessage = gson.fromJson(
result, ServerErrorMessage.class);
}catch (JsonSyntaxException e){
// handle the exception
}
catch (JsonIOException e){
// handle the exception
}
catch (JsonParseException e){
// handle the exception
}catch (IOException e){
// handle the exception
}
另一种方法是像这样使用org.json.JSONObject
private boolean isValidJsonResponse(String responseString){
try {
new JSONObject(responseString);
return true;
} catch(JSONException e) {
return false;
}
}