从json获得许多价值

时间:2011-07-09 13:00:00

标签: android json arraylist location

我需要获得我的android的经度和经度,它有很多这样的值: enter image description here

我试过这个来从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>();

我仍然不知道为什么你的代码不起作用。但是,非常感谢你的帮助:))

2 个答案:

答案 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库。它紧凑而快速。

https://sites.google.com/site/gson/gson-user-guide