【问题标题】:Nested JSONArray Record Parsing Issue Android嵌套 JSONArray 记录解析问题 Android
【发布时间】:2015-09-12 09:08:57
【问题描述】:

我正在制作一个从服务器接收 JSON 数据的应用程序,用户将从 Spinner 中选择一个值,例如 0、1、2... 等等,基于数字选择 JSON 将返回用户定义的数据像 0,1 这样的索引 .. 我不知道如何在 Android 中解析内部 JSON 数据

json = new JSONObject(JSONParser.Result);
JSONArray jArray = json.getJSONArray("data");
StopElement _stop = new StopElement();
Log.d("JSON Algo Result", json.toString());

if (jArray!=null) {
    for (int i = 0; i < jArray.length(); i++) {
        jsonarray = jArray.getJSONArray(i);
        if (jsonarray != null) {
            for (int j = 0; j < jsonarray.length(); i++){
                if(i==0) {
                    jsonarray = jArray.getJSONArray(j);
                    _stop.setName(jsonarray.getString(0));
                    StopElement.Stop_name_list.add(_stop.getName());
                }
             }
        } else {
            break;
        }
    }
} else {
    return null;
}


   **JSON Data**

[[["Sadiqabad Chowk","33.634525","73.074326","suzk1"],["Chungi No 8","33.627262","73.093567","suzk1"],["Jahaz Ground","33.628395","73.101936","suzk1"],["Khana Bridge","33.629967","73.112823","suzk1"],["Kuri Road","33.643162","73.102928","21"],["Faizabad","33.663212","73.084801","21"]],[["Sadiqabad Chowk","33.634525","73.074326","suzk1"],["Petrol Pump","33.634109","73.076363","suzk1"],["Chandni Chowk","33.631584","73.072563","suzk1"],["Rahmanabad","33.639065","73.075714","3"],["Passport Office","33.642410","73.076981","3"],["Shamsabad","33.650101","73.079994","3"],["Faizabad","33.663212","73.084801","3"]],[["Sadiqabad Chowk","33.634525","73.074326","suzk1"],["Chungi No 8","33.627262","73.093567","suzk1"],["Jahaz Ground","33.628395","73.101936","suzk1"],["Khana Bridge","33.629967","73.112823","suzk1"],["Zia Masjid","33.637196","73.107407","124-A"],["Kuri Road","33.643162","73.102928","124-A"],["Dhok Kala Khan","33.653118","73.095444","124-A"],["Faizabad","33.663212","73.084801","124-A"]],[["Sadiqabad Chowk","33.634525","73.074326","suzk1"],["Chungi No 8","33.627262","73.093567","suzk1"],["Jahaz Ground","33.628395","73.101936","suzk1"],["Khana Bridge","33.629967","73.112823","suzk1"],["Zia Masjid","33.637196","73.107407","136"],["Kuri Road","33.643162","73.102928","136"],["Iqbal Town","33.644279","73.100113","136"],["Dhok Kala Khan","33.653118","73.095444","136"],["Faizabad","33.663212","73.084801","136"]],[["Sadiqabad Chowk","33.634525","73.074326","suzk13"],["Dhok Ali Akbar","33.636997","73.092117","suzk13"],["Highway Stop","33.679722","73.075584","suzk13"],["Bhinder","33.556244","73.167946","suzk3"],["Lohi Bher","33.586273","73.145493","124"],["Wild Life Park","33.578770","73.132309","124"],["Airport Chowk","33.593803","73.139938","124"],["Gangal","33.612591","73.125801","124"],["Khana Bridge","33.629967","73.112823","124"],["Zia Masjid","33.637196","73.107407","124"],["Kuri Road","33.643162","73.102928","124"],["Dhok Kala Khan","33.653118","73.095444","124"],["Faizabad","33.663212","73.084801","124"]],[["Sadiqabad Chowk","33.634525","73.074326","suzk13"],["Petrol Pump","33.634109","73.076363","suzk13"],["Chandni Chowk","33.631584","73.072563","suzk13"],["Central Hospital","33.628784","73.070641","suzk13"],["Naz Cinema","33.623936","73.067802","suzk13"],["Waris Khan","33.620728","73.066078","suzk13"],["Comittee Chowk","33.612946","73.065193","suzk13"],["Liaquat Bagh","33.606808","73.064835","suzk13"],["Marir Hassan","33.596905","73.064445","suzk7"],["Punjab House","33.592701","73.065453","suzk7"],["Jhanda","33.588970","73.076195","suzk7"],["Raheemabad","33.599159","73.080048","21"],["Airport","33.603565","73.097137","21"],["Tajabad","33.601593","73.126213","21"],["Koral Chowk","33.605282","73.131279","21"],["Khana Bridge","33.629967","73.112823","21"],["Kuri Road","33.643162","73.102928","21"],["Faizabad","33.663212","73.084801","21"]],[["Sadiqabad Chowk","33.634525","73.074326","suzk13"],["Petrol Pump","33.634109","73.076363","suzk13"],["Chandni Chowk","33.631584","73.072563","suzk13"],["Central Hospital","33.628784","73.070641","suzk13"],["Naz Cinema","33.623936","73.067802","suzk13"],["Waris Khan","33.620728","73.066078","suzk13"],["Comittee Chowk","33.612946","73.065193","suzk13"],["Liaquat Bagh","33.606808","73.064835","suzk13"],["Medical College","33.602753","73.067200","29"],["Sir Syed Boys School","33.609600","73.078766","29"],["Fauji Tower","33.606770","73.084106","29"],["Chaklala Station","33.601013","73.095924","29"],["Raheemabad","33.599159","73.080048","29"],["Airport","33.603565","73.097137","21"],["Tajabad","33.601593","73.126213","21"],["Koral Chowk","33.605282","73.131279","21"],["Khana Bridge","33.629967","73.112823","21"],["Kuri Road","33.643162","73.102928","21"],["Faizabad","33.663212","73.084801","21"]],[["Sadiqabad Chowk","33.634525","73.074326","suzk13"],["Petrol Pump","33.634109","73.076363","suzk13"],["Chandni Chowk","33.631584","73.072563","suzk13"],["Central Hospital","33.628784","73.070641","suzk13"],["Naz Cinema","33.623936","73.067802","suzk13"]]]

【问题讨论】:

    标签: android json multidimensional-array


    【解决方案1】:

    我这样解决了我的问题

    try {
        int count = 0;
        if (success == 1) {
        json = new JSONObject(JSONParser.Result);
        jArray = json.getJSONArray("data");
        StopElement _stop = new StopElement();
        for (int i = 0; i < jArray.length(); i++) {
            count = count + 1;
           // Log.d("Counter", String.valueOf(count));
            get_path.add(String.valueOf(count));
            jsonarray = jArray.getJSONArray(i);
            Log.d("path Array", jsonarray.toString());
            if (getitemno>0) {
                getpath = jArray.getJSONArray(getitemno);
                for (int j = 0; j < getpath.length(); j++) {
                    getresult = getpath.getJSONArray(j);
                    _stop.setName(getresult.getString(0));
                    _map.setLat(getresult.getDouble(1));
                    _map.setLng(getresult.getDouble(2));
                    StopElement.Stop_name_list.add(_stop.getName());
                    MapCoordinatesElement.Lat.add(_map.getLat());
                    MapCoordinatesElement.Lng.add(_map.getLng());
                    //Log.d("Stop names", _stop.getName());
                   //  Log.d("Index Array", getpath.toString());
                }
            } else {
                getpath = jArray.getJSONArray(0);
                for (int j = 0; j < getpath.length(); j++) {
                    getresult = getpath.getJSONArray(j);
                    _stop.setName(getresult.getString(0));
                    _map.setLat(getresult.getDouble(1));
                    _map.setLng(getresult.getDouble(2));
                    StopElement.Stop_name_list.add(_stop.getName());
                    MapCoordinatesElement.Lat.add(_map.getLat());
                    MapCoordinatesElement.Lng.add(_map.getLng());
                    //Log.d("Stop names", _stop.getName());
                     //Log.d("Index Array", getpath.toString());
                }
            }
        }
        //    Log.d("Stop names of Algo", StopElement.Stop_name_list.toString());
        //  Log.d("Index Stop names", StopElement.Stop_name_list.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }   
    

    【讨论】:

      【解决方案2】:

      试试这个方法, 您可以根据您的要求获得结果

        private String jsonString="[[['Sadiqabad Chowk','33.634525','73.074326','suzk1'],['Chungi No 8','33.627262','73.093567','suzk1'],['Jahaz Ground','33.628395','73.101936','suzk1'],['Khana Bridge','33.629967','73.112823','suzk1'],['Kuri Road','33.643162','73.102928','21'],['Faizabad','33.663212','73.084801','21']],[['Sadiqabad Chowk','33.634525','73.074326','suzk1'],['Petrol Pump','33.634109','73.076363','suzk1'],['Chandni Chowk','33.631584','73.072563','suzk1'],['Rahmanabad','33.639065','73.075714','3'],['Passport Office','33.642410','73.076981','3'],['Shamsabad','33.650101','73.079994','3'],['Faizabad','33.663212','73.084801','3']],[['Sadiqabad Chowk','33.634525','73.074326','suzk1'],['Chungi No 8','33.627262','73.093567','suzk1'],['Jahaz Ground','33.628395','73.101936','suzk1'],['Khana Bridge','33.629967','73.112823','suzk1'],['Zia Masjid','33.637196','73.107407','124-A'],['Kuri Road','33.643162','73.102928','124-A'],['Dhok Kala Khan','33.653118','73.095444','124-A'],['Faizabad','33.663212','73.084801','124-A']],[['Sadiqabad Chowk','33.634525','73.074326','suzk1'],['Chungi No 8','33.627262','73.093567','suzk1'],['Jahaz Ground','33.628395','73.101936','suzk1'],['Khana Bridge','33.629967','73.112823','suzk1'],['Zia Masjid','33.637196','73.107407','136'],['Kuri Road','33.643162','73.102928','136'],['Iqbal Town','33.644279','73.100113','136'],['Dhok Kala Khan','33.653118','73.095444','136'],['Faizabad','33.663212','73.084801','136']],[['Sadiqabad Chowk','33.634525','73.074326','suzk13'],['Dhok Ali Akbar','33.636997','73.092117','suzk13'],['Highway Stop','33.679722','73.075584','suzk13'],['Bhinder','33.556244','73.167946','suzk3'],['Lohi Bher','33.586273','73.145493','124'],['Wild Life Park','33.578770','73.132309','124'],['Airport Chowk','33.593803','73.139938','124'],['Gangal','33.612591','73.125801','124'],['Khana Bridge','33.629967','73.112823','124'],['Zia Masjid','33.637196','73.107407','124'],['Kuri Road','33.643162','73.102928','124'],['Dhok Kala Khan','33.653118','73.095444','124'],['Faizabad','33.663212','73.084801','124']],[['Sadiqabad Chowk','33.634525','73.074326','suzk13'],['Petrol Pump','33.634109','73.076363','suzk13'],['Chandni Chowk','33.631584','73.072563','suzk13'],['Central Hospital','33.628784','73.070641','suzk13'],['Naz Cinema','33.623936','73.067802','suzk13'],['Waris Khan','33.620728','73.066078','suzk13'],['Comittee Chowk','33.612946','73.065193','suzk13'],['Liaquat Bagh','33.606808','73.064835','suzk13'],['Marir Hassan','33.596905','73.064445','suzk7'],['Punjab House','33.592701','73.065453','suzk7'],['Jhanda','33.588970','73.076195','suzk7'],['Raheemabad','33.599159','73.080048','21'],['Airport','33.603565','73.097137','21'],['Tajabad','33.601593','73.126213','21'],['Koral Chowk','33.605282','73.131279','21'],['Khana Bridge','33.629967','73.112823','21'],['Kuri Road','33.643162','73.102928','21'],['Faizabad','33.663212','73.084801','21']],[['Sadiqabad Chowk','33.634525','73.074326','suzk13'],['Petrol Pump','33.634109','73.076363','suzk13'],['Chandni Chowk','33.631584','73.072563','suzk13'],['Central Hospital','33.628784','73.070641','suzk13'],['Naz Cinema','33.623936','73.067802','suzk13'],['Waris Khan','33.620728','73.066078','suzk13'],['Comittee Chowk','33.612946','73.065193','suzk13'],['Liaquat Bagh','33.606808','73.064835','suzk13'],['Medical College','33.602753','73.067200','29'],['Sir Syed Boys School','33.609600','73.078766','29'],['Fauji Tower','33.606770','73.084106','29'],['Chaklala Station','33.601013','73.095924','29'],['Raheemabad','33.599159','73.080048','29'],['Airport','33.603565','73.097137','21'],['Tajabad','33.601593','73.126213','21'],['Koral Chowk','33.605282','73.131279','21'],['Khana Bridge','33.629967','73.112823','21'],['Kuri Road','33.643162','73.102928','21'],['Faizabad','33.663212','73.084801','21']],[['Sadiqabad Chowk','33.634525','73.074326','suzk13'],['Petrol Pump','33.634109','73.076363','suzk13'],['Chandni Chowk','33.631584','73.072563','suzk13'],['Central Hospital','33.628784','73.070641','suzk13'],['Naz Cinema','33.623936','73.067802','suzk13']]]";
        private void getJSONResult(String jsonString) {
          // TODO Auto-generated method stub
      
          try {
              JSONArray jsonArray = new JSONArray(jsonString);
              // i.e. the JsonMainArray 
              JSONArray JsonInnerArray= (JSONArray)jsonArray.get(0);
              // i.e. the JsonInnerArray 
              for(int i =0; i< JsonInnerArray.length();i++){
                  JSONArray jsonObject = (JSONArray)JsonInnerArray.get(i);
                  //i.e. the jsonObject of JsonInnerArray
                  String title = (String)jsonObject .get(0);
                  String latitude = (String)jsonObject.get(1);
                  String longitude = (String)jsonObject.get(2);
                  String companyName = (String)jsonObject.get(3);
              }
          } catch (JSONException e) {
              e.printStackTrace();
          }
      }
      

      【讨论】:

        【解决方案3】:

        这绝对适合你。

        String data= "[[['Jahaz Ground','33.628395','73.101936','suzk1'],['Khana Bridge','33.628395','73.101936','suzk1']]]";
                        try {
                            JSONArray json = new JSONArray(data);
                            JSONArray aray = (JSONArray)json.get(0);
                            for(int i =0; i< aray.length();i++){
                                JSONArray object = (JSONArray)aray.get(i);
                                String title = (String)object .get(0);
                                String lat = (String)object.get(1);
                                String lng = (String)object.get(2);
                                String com = (String)object.get(3);
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
        

        【讨论】:

          猜你喜欢
          • 2023-04-08
          • 2015-02-22
          • 2017-05-01
          • 2017-09-22
          • 1970-01-01
          • 2017-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多