我如何解析 Json 对象或数组?我的代码哪里出错了?

How i can parse in Json Object or Array? Where is error on my code?

我在 Android Studio 上解析 Json 时遇到一些错误, 如果您有任何想法,请分享我的错误所在。

我想获取当前汇率信息并在textview上打印出来

Json/Api Url : https://api.exchangeratesapi.io/latest?base=USD

private void jsonParse() {
    
    String SHOP_URL = "https://api.exchangeratesapi.io/latest?base=USD&symbols=EUR,GBP";
     
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, SHOP_URL, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {

                        JSONArray jsonArray = response.getJSONArray("rates");

                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject result = jsonArray.getJSONObject(i);
                            int xGBP=result.getInt("GBP");
                                 
                            usdtry.setText(String.valueOf(xGBP));
                        }
                        
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });
    pRequestQueue.add(request);

}

此代码没有错误但没有任何响应..我想我有一些遗漏。

rates 是一个 JsonObject,不是数组。

所以,您的代码必须是

JSONObject rates = response.getJSONObject("rates");
double xGBP = rates.getDouble("GBP");
usdtry.setText(String.valueOf(xGBP));

此外,为了更好地格式化,您可以使用:

DecimalFormat formatter = new DecimalFormat("###,###.##", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
usdtry.setText(formatter.format(xGBP));