我用这个做了一个简单的 JSON 解析器。我想要做的就是使用 Google 地图 api 解析企业的名称和纬度/经度,但我似乎无法正确解析它。
JSON结果示例:
"results" : [
{
"geometry" : {
"location" : {
"lat" : 41.8881090,
"lng" : -87.6308430
}
},
"name" : "American Bar Association",
},
{
"geometry" : {
"location" : {
"lat" : 41.8721230,
"lng" : -87.6294680
}
},
"name" : "Bar Louie",
} ], "status" : "OK"}
我删除了一些我不感兴趣的其他细节来缩短示例,但这是我的代码:
JSONParser jParse = new JSONParser();
JSONObject json = jParse.getJSON(url);
try
{
JSONArray contacts = json.getJSONArray("results"); //Parent Node
for(int i = 0; i < 5; i++)//Loop through first 5 results results
{
JSONObject c = contacts.getJSONObject(i);
name = c.getString("name");//Gets name field
//get lat from location which is a sub object of geometry
lat = Float.valueOf (contacts.getJSONObject(i).getJSONObject("geometry").getJSONObject("location").getString("lat"));
}
} catch (JSONException e) { e.printStackTrace(); }
当我运行它时,我得到的第一个结果很好,我得到了正确的名称和纬度,但是它没有移动到第二个结果,而是移动到 i 的最后一个结果并在循环的其余部分打印它。很难解释,我的意思是如果我遍历 5 个结果,我会得到:
- 循环 1 输出:Result#1 //这很好
- Loop 2 Output: Results#5 //不知何故我们跳到结果#5而不是得到#2
- 循环 3 输出:Results#5 //现在它只是在循环的其余部分每次都保持打印 #5
- 循环 4 输出:结果#5
- 循环 5 输出:结果#5
我不知道它是如何忽略 for 循环并获得最后一个结果的?我只用一条 Toast 消息打印结果,我省略了一个较短的片段。
(我会注意到我正在通过一个单独的线程运行它并使用处理程序来显示 Toast 消息,如果这很重要的话)
我在 Java 方面真的不是那么好,这是我第一次使用 JSON,所以请不要说我可能说过的任何愚蠢。任何帮助深表感谢。:)