我试图在用户成功登录后获取数据,但我从未得到任何结果,我接下来要做的是:
// response is my request to server
JSONObject obj = new JSONObject(response);
Log.d("RESPONSE",obj.toString());
所以在日志中我确实看到了值,如:
04-19 11:28:16.729: D/RESPONSE(3162): {"data":[{"loses":3,"username":"benedict","level":1,"strength":15,"experience":null,"gold":10,"password":"benedict","intelligence":5,"agility":10,"wins":5}],"status":true}
但是一旦我尝试读取用户名,例如:
String username = obj.getString("username");
上面的代码^在我的字符串中没有给我任何内容.. 有关如何从JSONObject检索数据的任何帮助?谢谢!
答案 0 :(得分:4)
这是因为username
对象中存在data
,恰好是JSONArray
。从响应对象获取data
数组,遍历数组中的每个JSONObject
,并从每个对象中提取username
。
这样的事情: -
JSONObject obj = new JSONObject(response);
JSONArray data = obj.getJSONArray("data");
for(int i=0;i<data.length();i++){
JSONObject eachData = data.getJSONObject(i);
System.out.println("Username= "+ eachData.getString("username"));
}
答案 1 :(得分:2)
您的字段用户名是数组数据。要访问此尝试:
JSONObject obj = new JSONObject(response);
JSONArray array = obj.getJSONArray("data");
for(int i = 0; i < array.length(); ++i){
JSONObject data = array.getJSONObject(i);
String username = data.getString("username");
}
答案 2 :(得分:2)
您需要首先获得JSONArray
data
:
JSONArray data = null;
data = json.getJSONArray("data");
for(int i = 0; i < data.length(); i++){
JSONObject c = data.getJSONObject(i);
String username = c.getString("username");
}
您可以了解从HERE
解析JSON答案 3 :(得分:1)
试试这个......
尝试{
JSONObject object = new JSONObject(response);
JSONArray Jarray = object.getJSONArray("data");
for (int i = 0; i < Jarray.length(); i++) {
JSONObject Jasonobject = Jarray.getJSONObject(i);
String loose= Jasonobject.getString("loses");
String username=Jasonobject.getString("username");
.......
........
}
} catch (JSONException e) {
Log.e("log_txt", "Error parsing data " + e.toString());
}