如何在java中按名称从json数组中提取json对象?

时间:2014-08-23 19:50:54

标签: java android json

我正在接收来自Google Directions API的JSON,请求就像这里显示的那样(在路线响应 - > Json输出下)link

我不知道如何从json数组中提取特定条目。基本上我需要的是JSONArray等效的JSONObject方法get(String key),您可以在其中获取映射到特定键的条目。但是,JSONArray没有这样的方法,似乎只支持通过特定索引检索信息。这一切都很好,但谷歌方向响应的内容可能会有所不同 - 所以我需要一种方法来找到一个特定的键值配对,或循环整个阵列,并有办法检查密钥的值。我甚至可以找到一种方法来确定JSONObject映射到的键。有什么建议?例如:如何从JSONArray支路中提取距离JSONObject?

编辑:这是我被困的地方:引用JSON示例输出here ...我试图获取“routes”json数组中“overview_polyline”条目的值。由于我无法通过引用其名称来访问“overview_polyline”条目,因此我必须循环遍历数组,直到找到该条目。但是,当我进入那个条目时,我怎么知道?是的,也许我可以检查条目的JSONObject表示是否具有“points”键,但这不一定是“overview_polyline”条目所独有的。此外,我不能简单地获取(array.length() - n)条目,因为数组中返回的条目数可能会有所不同。简而言之,在我看来,我需要一种方法来检查每个JSONObject的名称(“overview_polyline”),以便可靠地提取该信息。

            JSONArray routesArray = resultObj.getJSONArray("routes");

            for(int i = 0; i < routesArray.length(); i++)
            {
                JSONObject obj = routesArray.optJSONObject(i);
                if(obj != null) 
                {
                    //How do I determine if this object is the "overview_polyline" 
                    //object?
                }
            }

1 个答案:

答案 0 :(得分:2)

routeJSONArray的{​​{1}},所以你必须这样做:

JSONObject