从JSON对象获取值的问题

时间:2013-04-19 09:21:17

标签: android json

我试图在用户成功登录后获取数据,但我从未得到任何结果,我接下来要做的是:

// 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检索数据的任何帮助?谢谢!

4 个答案:

答案 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());
    }