我有一个返回 2 组不同值的响应。在每种情况下,都会有一个值always为空,另一个将为空always包含一个值。问题是 Volley 不允许我分配 null JSON 值或在 if 语句中检查 JSON 值。它只是指 catch 块。我正在尝试做类似的事情:
StringRequest request = new StringRequest(Request.Method.POST, "url", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
//If this is null, it stops here and goes to catch.
String value1 = obj.getString("value1")
String value2 = obj.getString("value2");
//Can't perform any more code because Value1 is null
} catch (JSONException e) {
Log.d("Log","Your String was null");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Log", "Unable to connect to server!");
}
});
我不能使用throws
由于库的设计方式,它迫使我将其放入 try/catch 中。到底有没有这方面的事情呢?
EDIT:以下是我得到的异常:
org.json.JSONException: value1 没有值
您是否尝试过使用.isNull("键") http://www.json.org/javadoc/org/json/JSONObject.html#isNull%28java.lang.String%29JSONObject 上的方法?
然后你可以做这样的事情:
String value1 = jsonObject.isNull("value1") ? null : jsonObject.getString("value1");
String value2 = jsonObject.isNull("value2") ? null : jsonObject.getString("value2");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)