不显示带有响应的传入数据

时间:2018-11-04 11:34:36

标签: android android-volley

我正在为android编写一个应用程序,并使用了volley库。我需要将接收到的数据写入TextResult。怎么做?

private void jsonParse() {
        String url = "https://api.apixu.com/v1/current.json?key=...&q=Paris";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("location");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject location = jsonArray.getJSONObject(i);
                                String name = location.getString("name");
                                String region = location.getString("region");
                                String country = location.getString("country");
                                TextResult.append(name + ", " + region + ", " + country + "\n\n");
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        mQueue.add(request);
    }

Json响应示例

{"location":{"name":"Paris","region":"Ile-de-France","country":"France"}}

2 个答案:

答案 0 :(得分:1)

使用这段代码。

@Override
    public void onResponse(JSONObject response) {
        try {
            JSONObject jsonObject = response.getJSONObject("location");

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONArray location = jsonObject.getJSONArray(i);
                String name = location.getString("name");
                String region = location.getString("region");
                String country = location.getString("country");
                TextResult.append(name + ", " + region + ", " + country + "\n\n");
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

答案 1 :(得分:-1)

{"location":{"name":"Paris","region":"Ile-de-France","country":"France"}}

Its not a JSONArray its a JSONObject.

First get the location from JSONObject.

String location_value=response.get("location");

JSONObject location=new JSONObject(location_value);

String name = location.getString("name");
String region = location.getString("region");
String country = location.getString("country");

TextResult.append(name + ", " + region + ", " + country + "\n\n");