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

Posted

技术标签:

【中文标题】我如何解析 Json 对象或数组?我的代码哪里出错了?【英文标题】:How i can parse in Json Object or Array? Where is error on my code? 【发布时间】:2021-04-02 18:31:49 【问题描述】:

我在 android Studio 上解析 Json 时有一些错误, 如果您有任何想法,请分享我的错误在哪里。

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

Json/Api 网址: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);


这段代码没有出错但没有任何响应..我想我有一些遗漏。

【问题讨论】:

【参考方案1】:

ratesJsonObject,而不是数组。

所以,你的代码必须是

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

【讨论】:

感谢我像您的解决方案一样更改了我的代码,但仍然没有在我的文本视图上显示结果。我需要使用 JsonObjectRequest 部分吗? @LutfuA。您必须从您拥有的e.printStackTrace();s 中获得一些错误日志。请在问题中发布它们 那么你只需要调试它。尝试打印 JSON 响应和 rate 对象 只使用 Jsonobject 对象时,我应该在哪里添加 URL?需要回复吗? 感谢您的解决方案。我明白我的错误在哪里。

以上是关于我如何解析 Json 对象或数组?我的代码哪里出错了?的主要内容,如果未能解决你的问题,请参考以下文章

快速解析 JSON 并在数组中循环时出错

AsyncTask #3 解析 JSON 对象时出错。字符串无法转换为 JSONObject

如何在 Object Mapper for Swift 上解析数组对象

在 iOS 中使用数组解析 JSON 时出错

如何解析具有相同键的不同数据类型的改造对象的json数组

如何解析 JSON 数组对象?