【问题标题】:Problems with getting values from JSON object从 JSON 对象获取值的问题
【发布时间】:2017-03-09 12:01:06
【问题描述】:

一旦用户成功登录,我就会尝试获取数据,但我从未得到任何结果,接下来我要做的是:

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

【问题讨论】:

  • 你需要学习JSON Parsing
  • 是的,我确实需要,第一次尝试并且没有太多时间来完成教程,所以我在这里尝试。如果您知道任何好的教程,请建议,我也可以随机谷歌:)

标签: android json


【解决方案1】:

这是因为username 存在于data 对象中,而该对象恰好是JSONArray。从 response 对象中获取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"));
}

【讨论】:

  • 非常感谢,我现在就试试,第一次使用 json :)
  • 百万谢谢,它工作正常!需要等待 2 分钟然后接受答案
【解决方案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");
}

【讨论】:

    【解决方案3】:

    您需要先获取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的想法

    【讨论】:

      【解决方案4】:

      试试这个...

      试试{

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-29
        • 1970-01-01
        • 2018-11-15
        • 2013-08-28
        相关资源
        最近更新 更多