我需要获得我的android的经度和经度,它有很多这样的值:
我试过这个来从JSON获取值:
ArrayList<String> longitude;
ArrayList<String> latitude;
public void parseJson(String result) {
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jo = jArray.getJSONObject(i);
latitude.add(jo.getString("Latitude").toString());
longitude.add(jo.getString("Longitude").toString());
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
}
但是当我检查数组的大小时,它是空的。 任何人都可以帮助或暗示我的错误?感谢
@after修改后,我仍然得到0大小的数组。所以,我试图搜索Toast停止的地方,然后我发现:
public void parseJson(String result) throws JSONException {
longitude = new ArrayList<String>();
latitude = new ArrayList<String>();
JSONArray jArray = (JSONArray)JSONValue.parse(result);
for (Object obj: jArray) {
JSONObject jo = (JSONObject)obj;
//here is when I toast it's got nothing
latitude.add(jo.get("Latitude").toString());
longitude.add(jo.get("Longitude").toString());
}
}
@aroth我得到了答案!我回来用这样的方式:
public void parseJson(String result) throws JSONException {
longitude = new ArrayList<String>();
latitude = new ArrayList<String>();
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jo = jArray.getJSONObject(i);
latitude.add(jo.getString("Latitude").toString());
longitude.add(jo.getString("Longitude").toString());
}
我想我忘记了这些:
longitude = new ArrayList<String>();
latitude = new ArrayList<String>();
我仍然不知道为什么你的代码不起作用。但是,非常感谢你的帮助:))
答案 0 :(得分:1)
json.org库的get<Type>
方法毫无意义地使用JSONException
毫无意义,我建议切换到simple-json。然后你可以这样做:
ArrayList<String> longitude;
ArrayList<String> latitude;
public void parseJson(String result) {
longitude = new ArrayList<String>();
latitude = new ArrayList<String>();
JSONArray jArray = (JSONArray)JSONValue.parse(result);
for (Object obj : jArray) {
JSONObject jo = (JSONObject)obj;
latitude.add(jo.get("Latitude").toString());
longitude.add(jo.get("Longitude").toString());
}
}
//a simple test case
public static void main(String[] args) {
String json = "[{\"Latitude\": \"1.23\", \"Longitude\": \"1.23\"}, \n{\"Latitude\": \"1.23\", \"Longitude\": \"1.23\"}, \n{\"Latitude\": \"1.23\", \"Longitude\": \"1.23\"}]";
MyParser parser = new MyParser();
parser.parseJson(json);
//should print: 3, 3
System.out.println(parser.latitude.size() + ", " + parser.longitude.size());
}
应该有效,假设您的输入JSON与您的示例代码段匹配。
答案 1 :(得分:0)
尝试使用gson库。它紧凑而快速。