【问题标题】:Parse Json Response and fll arraylist解析 Json 响应并填充数组列表
【发布时间】:2016-07-04 18:50:40
【问题描述】:
  • 我能够得到 json 响应

  • 但我不知道如何在响应中获取数据以及如何获取特定字段并填充数组列表

  • 我所做的是:

       protected String doInBackground(String... args) {
    
            fruit = preferenceHelper.getWalkerfruit();
            flower = preferenceHelper.getWalkerflower();
            try {
    
                // Building Parameters
                params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("fruit", lfruit));
                params.add(new BasicNameValuePair("flower", flower));
    
                Log.d("Parameters", params.toString());
    
    
                Log.d("request!", "starting");
    
                // getting user details by making HTTP request
                JSONObject json = jsonParser.makeHttpRequest(FLOWER_SERVICE, "POST", params);
    
                // check your log for json response
                Log.d("attempt", json.toString());
    
               JSONObject jsonObject = userData.getJSONObject(0);
    
                JSONArray jsonArray = jsonObject.getJSONArray("Data");
                String success = json.optString("status");
                String msgd = json.getString("message");
                String str_value = json.getString("id");
                Log.d("id", str_value);
                arraylist1 = new ArrayList<HashMap<String, String>>();
                for (int i = 0; i < jsonArray.length(); i++) 
                 {
                    HashMap<String, String> map = new HashMap<String, String>();
                    JSONObject obj = jsonArray.getJSONObject(i);
                    Log.d("oasdasdbj", obj.toString());
    
                    String str_value = obj.getString("id");
                    Log.d("alert_idasdas", str_value);
                    id = obj.getString(Constants.Params.ID);
    
                    map.put("id", str_value);
                    Log.d("map", map.toString());
                    arraylist1.add(map);
    
                }
                  Log.d("response", " " + msgd);
    
                if (success.equals("false")) {
                    Log.d("Failure!", json.toString());
                    finish();
                    return json.getString(TAG_MESSAGE);
    
                } else if (success.equals("true")) {
                    Log.d("Successful!", json.toString());
    
                    }
    
            } catch (JSONException e) {
                e.printStackTrace();
    
            }
            return null;
        }
    

Json 响应:

{"status":true,"message":"Successfully","Data":[{"id":"92","name":"","abcd":"dfgfddg","adfffwe":"asdsad"}]}

【问题讨论】:

  • 你想用这个响应做什么简要告诉我
  • 你的response是保存在'{}'里面对的,是一个json对象,你需要读取Data,它是一个json数组。你可以像 jsonObject.getJsonArray("Data");并将其存储在 jsonArray 变量中,然后进行相应处理。检查tutorialspoint.com/android/android_json_parser.htm
  • 我想要来自 json 响应的 id

标签: android json web-services parsing arraylist


【解决方案1】:

JSON 无效,可能是复制问题,但我确认这是有效的

{"status":true,"message":"Successfully","Data":[{"id":"92","name":"","abcd":"dfgfddg","adfffwe":"asdsad"}]}

要获取此 JSON 的 Data 对象内的数据,您可以这样做

JSONObject jsonObject = userData.getJSONObject(0);
jsonObject.getJsonArray("Data").getJsonObject(0).getString("abcd") //To fetch the value of abcd inside Data Object
jsonObject.getJsonArray("Data").getJsonObject(0).getString("id") //To fetch the value of abcd inside Data Object

和这个一样..

【讨论】:

    【解决方案2】:
    //Editing AlokGupta Code:
    JSONArray array= jsonResponse.getJSONArray("Data");
    for (int i=0; i < array.length(); i++) {
        JSONObject obj = array.getJSONObject(i);
        String id= obj.getString("id");
    }
    

    【讨论】:

    • AlokGupta 喜欢这个。 :p 谢谢@Amit
    【解决方案3】:

    jsonResponse 包含您从服务器获得的内容。

    JSONArray array= jsonResponse.getJSONArray("Data");
    for (int i=0; i < array.length(); i++) {
        JSONObject obj = array.getJSONObject(i);
        String id= obj.getString("Id");
    }
    

    根据需要更改 id 的数据类型。希望这会有所帮助。

    【讨论】:

    • 我没有测试代码,这可能不是确切的解决方案,您可以调试并查看 JSONArray 数组变量中的内容并相应地修改代码。我的机器上现在没有 android 设置。
    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多