从 json 中获取很多值

发布于 2024-11-19 08:46:20 字数 2047 浏览 1 评论 0原文

我需要获取我的 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());
        }
    }

但是当我检查数组的大小时,它是空的。 任何人都可以帮助或建议我的错误吗?谢谢

@修改后,我仍然得到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>();

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

I need to get latitude and longitude to my android, it got many values like this :
enter image description here

I tried this to get values from 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());
        }
    }

But When I check the size of array, it's empty.
Anyone can help or suggest my wrong ? Thanks

@after modified,I still got 0 size of array. So,I tried to search where it's stop by Toast then I found :

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 I got an answer!! I back to use my way like this :

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());
        }

I think I forgot declare these:

         longitude = new ArrayList<String>();
         latitude = new ArrayList<String>();

I still no idea why your code is not work. However, thank a lot for your help :))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一江春梦 2024-11-26 08:46:20

json.org 库的 get 方法毫无必要地迟钝,这些方法都毫无意义地抛出 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 与你的示例片段匹配,应该可以工作。

The json.org library is needlessly obtuse with its get<Type> methods that all pointlessly throw JSONException, I would recommend switching to simple-json. Then you could do:

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());
}

Should work, assuming your input JSON matches your example snippet.

破晓 2024-11-26 08:46:20

尝试使用 gson 库。它紧凑且快速。

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

try using gson library. It's compact and fast.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文