无法通过从 JsonObject 获取值来编译代码

Posted

技术标签:

【中文标题】无法通过从 JsonObject 获取值来编译代码【英文标题】:Can't compile the code with getting the value from JsonObject 【发布时间】:2019-06-11 02:31:17 【问题描述】:

我使用 Volley 库向 Google Places 发出 API 请求。 响应是这样的对象:


    "html_attributions": [],
    "results": [
        
          "address":  "Wood Quay, Dublin, Ireland",
          "name":     "Christ Church Cathedral",
          "place_id": "ChIJGw9ASiYMZ0gRy9yiaCZxNZI",
        ,
         ... ,
         ... ,
    ],
    "status": "OK"

Response.Listener 中,我需要访问“结果”数组。 我尝试获取名称为“results”的 JSONArray,如下所示:

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, API_URL, null,
        new Response.Listener <JSONObject> () 
            @Override
            public void onResponse(JSONObject response) 

                // THE PROBLEM IS HERE - WON'T COMPILE !!!
                JSONArray array = response.getJSONArray("results");
            
        ,
        new Response.ErrorListener() 
            @Override
            public void onErrorResponse(VolleyError error) 
                //
            
        );

但我看到一个错误:

【问题讨论】:

【参考方案1】:

好像response.getJSONArray("results"); 抛出了JSONException。您需要通过使用 try-catch 块包装 response.getJSONArray("results"); 来处理该异常。

类似这样的:

 try 
    JSONArray array = response.getJSONArray("results");
 catch (org.json.JSONException exception) 
    //  handle the exception

【讨论】:

以上是关于无法通过从 JsonObject 获取值来编译代码的主要内容,如果未能解决你的问题,请参考以下文章

如何通过从数据库中获取值来制作可靠的下拉列表

如何通过从另一个下拉列表中选择值来填充下拉列表?

无法通过从两个不同子例程传递给新子例程的值来执行计算:Perl

如何通过从数据库中检索值来显示文本框中的值?

通过从文件中读取值来计算移动平均值

通过从每个集合中仅选择一个值来选择 k 个大小的子集