Android 的 Volley 的 JSONArray 响应
JSONArray response with Volley for Android
我正在使用 Volley 将一些数据发布到数据库中,我得到以下 jsonarray 响应。
[
{
"nickname":"panikos",
"username":"panikos@gmail.com",
"user_type":"LEADER",
"latest_steps":"0"
}
]
这是我的代码示例,遗憾的是它没有注销或调试 "nickname" 对象的变量:(.
final JsonArrayRequest jsonObjReq1 = new
JsonArrayRequest(AppConfig.URL_GET_TEAM, jsonObject,
new com.android.volley.Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", response.toString());
try {
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
JSONObject jresponse =
jsonArray.getJSONObject(i);
String nickname =
jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
//pDialog.dismiss();
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG", "Error: " + error.getMessage());
//pDialog.dismiss();
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
};
有什么想法吗?我错过了什么吗?
谢谢。
我的问题可能是 - 您已经将 response
作为 JSONArray
。
因此,您可以致电
JSONObject jresponse = response.getJSONObject(0);
如果您有超过 1 个对象作为响应,则
for(int i = 0; i < response.length(); i++){
JSONObject jresponse = response.getJSONObject(i);
String nickname = jresponse.getString("nickname");
Log.d("nickname", nickname);
}
删除这个:
try {
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
JSONObject jresponse =
jsonArray.getJSONObject(i);
String nickname =
jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
并添加:
try {
JSONObject jresponse = response.getJSONObject(0);
String nickname = jresponse.getString("nickname");
Log.d("nickname",nickname);
}catch (JSONException e) {
e.printStackTrace();
}
代码看起来不错,但我认为您可能缺少在请求队列中添加 jsonObjReq1
的调用。我建议使用 Singleton Pattern.
已修复!!!
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", response.toString());
try {
Log.d("JsonArray",response.toString());
for(int i=0;i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String nickname = jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
//pDialog.dismiss();
}
无需创建新的 JSONArray。它是在 onResponse() 方法中创建的。我分配的下一个项目会更复杂 webservices.omg!!!
我正在使用 Volley 将一些数据发布到数据库中,我得到以下 jsonarray 响应。
[
{
"nickname":"panikos",
"username":"panikos@gmail.com",
"user_type":"LEADER",
"latest_steps":"0"
}
]
这是我的代码示例,遗憾的是它没有注销或调试 "nickname" 对象的变量:(.
final JsonArrayRequest jsonObjReq1 = new
JsonArrayRequest(AppConfig.URL_GET_TEAM, jsonObject,
new com.android.volley.Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", response.toString());
try {
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
JSONObject jresponse =
jsonArray.getJSONObject(i);
String nickname =
jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
//pDialog.dismiss();
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG", "Error: " + error.getMessage());
//pDialog.dismiss();
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
};
有什么想法吗?我错过了什么吗?
谢谢。
我的问题可能是 - 您已经将 response
作为 JSONArray
。
因此,您可以致电
JSONObject jresponse = response.getJSONObject(0);
如果您有超过 1 个对象作为响应,则
for(int i = 0; i < response.length(); i++){
JSONObject jresponse = response.getJSONObject(i);
String nickname = jresponse.getString("nickname");
Log.d("nickname", nickname);
}
删除这个:
try {
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
JSONObject jresponse =
jsonArray.getJSONObject(i);
String nickname =
jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
并添加:
try {
JSONObject jresponse = response.getJSONObject(0);
String nickname = jresponse.getString("nickname");
Log.d("nickname",nickname);
}catch (JSONException e) {
e.printStackTrace();
}
代码看起来不错,但我认为您可能缺少在请求队列中添加 jsonObjReq1
的调用。我建议使用 Singleton Pattern.
已修复!!!
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", response.toString());
try {
Log.d("JsonArray",response.toString());
for(int i=0;i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String nickname = jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
//pDialog.dismiss();
}
无需创建新的 JSONArray。它是在 onResponse() 方法中创建的。我分配的下一个项目会更复杂 webservices.omg!!!