【问题标题】:Multiple array json parsing under a object in android [closed]android中对象下的多个数组json解析[关闭]
【发布时间】:2014-08-25 11:58:33
【问题描述】:

如何解析这些数据:

{  
   "data":{  
      "ambulance":[  
         {  
            "ID":"1",
            "Title":"title1",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"2",
            "Title":"title1",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"3",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"4",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"5",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"6",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"7",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"8",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"9",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"10",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"11",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"12",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         }
      ],
      "bloodbank":[  
         {  
            "ID":"1",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"2",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"3",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         }
      ],
      "hospital":[  
         {  
            "ID":"1",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"2",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"3",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"4",
            "Title":"Charpara",
            "Longitude":"45.156849",
            "Latitude":"27.158945",
            "Address":"Mymensingh Medical College"
         },
         {  
            "ID":"5",
            "Title":"Sylhet Osmani Medical College",
            "Longitude":"78.1245887",
            "Latitude":"76.054846",
            "Address":"Osmani Meical College road, Sylher"
         }
      ]
   }
}

【问题讨论】:

  • 你尝试了什么?到目前为止?
  • 您解析它的方式与任何其他 JSON 相同
  • 如果您是 JSON 新手,对解析感到困惑,请先将 JSON 内容粘贴到 JSON 查看器中并仔细观察,然后通过了解数据结构得到您需要的答案。在 JSON 中实际上没有什么难的,只有两种类型,一种是 ARRAy,可以作为具有像 a[0] 之类索引的普通数组访问,另一种是 OBJECT,其属性可以使用 '.'(dot); 访问。如果你这样练习,你将很容易解析任何复杂的 JSON。

标签: android json parsing


【解决方案1】:

使用 this link doInBackground 方法,您必须拥有以下代码:

if (jsonStr != null) {
    try {
        JSONObject jsonObj = new JSONObject(jsonStr);


        JSONObject data = jsonObj.getJSONObject("data");

        // Getting JSON Array node 
        JSONArray ambulance = jsonObj.getJSONArray("ambulance");
        // looping through All ambulance 
        for (int i = 0; i < ambulance.length(); i++) {
            JSONObject c = contacts.getJSONObject(i);

            String id = c.getString("ID");
            String Title = c.getString("Title");
            String Longitude = c.getString("Longitude");
            String Latitude = c.getString("Latitude");
            String Address = c.getString("Address");
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
} else {
    Log.e("ServiceHandler", "Couldn't get any data from the url");
}

【讨论】:

    【解决方案2】:

    说“数据”是您的 JSON 字符串的名称,那么就可以了(不要忘记捕获 JSONException):

    JSONObject dataJson = new JSONObject(data).getJSONObject("data");
    JSONArray ambulance = dataJson.getJSONArray("ambulance");
    JSONArray bloodbank = dataJson.getJSONArray("bloodbank");
    JSONArray hospital = dataJson.getJSONArray("hospital");
    

    例如,您可以通过遍历 JSONArray 并调用 ambulance.getJSONObject(i) 来访问特定对象。然后你只需要调用 getString("ID") 等等来获取值。

    【讨论】:

      【解决方案3】:

      您需要按照 json 保持正确的数据结构。

      在你的情况下是这样的:

      public class Response{
          public List<Ambulance> aList = new ArrayList<Ambulance>();
          public List<BloodBank> bList = new ArrayList<Ambulance>();
      
          //getter setter for both lists
      }
      
      public class Ambulance{
          private String  ID = "";
          private String  Title = "";
          private Double Longitude=0.0;
          private Double Latitude=0.0;
          private String  Address = "";
          public String getID() {
              return ID;
          }
          public void setID(String iD) {
              ID = iD;
          }
          public String getTitle() {
              return Title;
          }
          public void setTitle(String title) {
              Title = title;
          }
          public Double getLongitude() {
              return Longitude;
          }
          public void setLongitude(Double longitude) {
              Longitude = longitude;
          }
          public Double getLatitude() {
              return Latitude;
          }
          public void setLatitude(Double latitude) {
              Latitude = latitude;
          }
          public String getAddress() {
              return Address;
          }
          public void setAddress(String address) {
              Address = address;
          }
      
      }
      
      public class BloodBank{
          private String  ID = "";
          private String  Title = "";
          private Double Longitude=0.0;
          private Double Latitude=0.0;
          private String  Address = "";
          public String getID() {
              return ID;
          }
          public void setID(String iD) {
              ID = iD;
          }
          public String getTitle() {
              return Title;
          }
          public void setTitle(String title) {
              Title = title;
          }
          public Double getLongitude() {
              return Longitude;
          }
          public void setLongitude(Double longitude) {
              Longitude = longitude;
          }
          public Double getLatitude() {
              return Latitude;
          }
          public void setLatitude(Double latitude) {
              Latitude = latitude;
          }
          public String getAddress() {
              return Address;
          }
          public void setAddress(String address) {
              Address = address;
          }
      
      }
      

      然后解析为:

      Response response = new Gson().fromJson(responseString,
                          Response.class);
      

      【讨论】:

        【解决方案4】:

        试试这个方法,希望能帮助你解决问题。

               try{
                    String jsonResponse = "{\"data\":{\"ambulance\":[{\"ID\":\"1\",\"Title\":\"title1\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"2\",\"Title\":\"title1\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"3\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"4\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"5\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"6\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"7\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"8\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"9\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"10\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"11\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"12\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"}],\"bloodbank\":[{\"ID\":\"1\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"2\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"3\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"}],\"hospital\":[{\"ID\":\"1\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"2\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"3\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"4\",\"Title\":\"Charpara\",\"Longitude\":\"45.156849\",\"Latitude\":\"27.158945\",\"Address\":\"Mymensingh Medical College\"},{\"ID\":\"5\",\"Title\":\"Sylhet Osmani Medical College\",\"Longitude\":\"78.1245887\",\"Latitude\":\"76.054846\",\"Address\":\"Osmani Meical College road, Sylher\"}]}}";
        
                     JSONObject responeJson = new JSONObject(jsonResponse);
                     JSONObject dataJson = responeJson.optJSONObject("data");
        
                    ArrayList<HashMap<String,String>> ambulanceList = new ArrayList<HashMap<String, String>>();
                    JSONArray ambulanceJsonArray = dataJson.getJSONArray("ambulance");
                    for(int i=0;i<ambulanceJsonArray.length();i++){
                        HashMap<String,String> ambulanceMap = new HashMap<String, String>();
                        ambulanceMap.put("ID", ambulanceJsonArray.getJSONObject(i).getString("ID"));
                        ambulanceMap.put("Title", ambulanceJsonArray.getJSONObject(i).getString("Title"));
                        ambulanceMap.put("Longitude", ambulanceJsonArray.getJSONObject(i).getString("Longitude"));
                        ambulanceMap.put("Latitude", ambulanceJsonArray.getJSONObject(i).getString("Latitude"));
                        ambulanceMap.put("Address", ambulanceJsonArray.getJSONObject(i).getString("Address"));
                        ambulanceList.add(ambulanceMap);
                    }
        
                    ArrayList<HashMap<String,String>> hospitalList = new ArrayList<HashMap<String, String>>();
                    JSONArray hospitalJsonArray = dataJson.getJSONArray("hospital");
                    for(int i=0;i<hospitalJsonArray.length();i++){
                        HashMap<String,String> hospitalMap = new HashMap<String, String>();
                        hospitalMap.put("ID", hospitalJsonArray.getJSONObject(i).getString("ID"));
                        hospitalMap.put("Title", hospitalJsonArray.getJSONObject(i).getString("Title"));
                        hospitalMap.put("Longitude", hospitalJsonArray.getJSONObject(i).getString("Longitude"));
                        hospitalMap.put("Latitude", hospitalJsonArray.getJSONObject(i).getString("Latitude"));
                        hospitalMap.put("Address", hospitalJsonArray.getJSONObject(i).getString("Address"));
                        hospitalList.add(hospitalMap);
                    }
        
                    ArrayList<HashMap<String,String>> bloodbankList = new ArrayList<HashMap<String, String>>();
                    JSONArray bloodbankJsonArray = dataJson.getJSONArray("bloodbank");
                    for(int i=0;i<bloodbankJsonArray.length();i++){
                        HashMap<String,String> bloodbankMap = new HashMap<String, String>();
                        bloodbankMap.put("ID", bloodbankJsonArray.getJSONObject(i).getString("ID"));
                        bloodbankMap.put("Title", bloodbankJsonArray.getJSONObject(i).getString("Title"));
                        bloodbankMap.put("Longitude", bloodbankJsonArray.getJSONObject(i).getString("Longitude"));
                        bloodbankMap.put("Latitude", bloodbankJsonArray.getJSONObject(i).getString("Latitude"));
                        bloodbankMap.put("Address", bloodbankJsonArray.getJSONObject(i).getString("Address"));
                        bloodbankList.add(bloodbankMap);
                    }
        
        
                    for (int i=0;i<ambulanceList.size();i++) {
                        HashMap<String, String> ambulanceMapData = ambulanceList.get(i);
                        System.out.print("ID :" + ambulanceMapData.get("ID"));
                        System.out.print("Title :" + ambulanceMapData.get("Title"));
                        System.out.print("Longitude :" + ambulanceMapData.get("Longitude"));
                        System.out.print("Latitude :" + ambulanceMapData.get("Latitude"));
                        System.out.print("Address :" + ambulanceMapData.get("Address"));
                    }
                    for (int i=0;i<bloodbankList.size();i++) {
                        HashMap<String, String> bloodbankMapData = bloodbankList.get(i);
                        System.out.print("ID :" + bloodbankMapData.get("ID"));
                        System.out.print("Title :" + bloodbankMapData.get("Title"));
                        System.out.print("Longitude :" + bloodbankMapData.get("Longitude"));
                        System.out.print("Latitude :" + bloodbankMapData.get("Latitude"));
                        System.out.print("Address :" + bloodbankMapData.get("Address"));
                    }
                    for (int i=0;i<hospitalList.size();i++) {
                        HashMap<String, String> hospitalMapData = hospitalList.get(i);
                        System.out.print("ID :" + hospitalMapData.get("ID"));
                        System.out.print("Title :" + hospitalMapData.get("Title"));
                        System.out.print("Longitude :" + hospitalMapData.get("Longitude"));
                        System.out.print("Latitude :" + hospitalMapData.get("Latitude"));
                        System.out.print("Address :" + hospitalMapData.get("Address"));
                    }
        
                }catch (Throwable e){
                    e.printStackTrace();
                }
        

        【讨论】:

          【解决方案5】:
          JSONObject dataJsonObject = new JSONObject(toParseData);
                          JSONArray ambulanceArray = dataJsonObject.getJSONArray("ambulance");
                          for(int i=0;i<ambulanceArray.length();i++){
                              JSONObject ambulanceChildNode = ambulanceArray.getJSONObject(i);
                              String ID=ambulanceChildNode.getString("ID");
                          }
                          JSONArray bloodBankArray = dataJsonObject.getJSONArray("bloodbank");
                          for(int i=0;i<bloodBankArray.length();i++){
                              JSONObject ambulanceChildNode = ambulanceArray.getJSONObject(i);
                              String title=bloodBankArray.getString("Title");
                          }
          

          。 . . . .

          .......等等。不要偷懒。尝试后发布问题,如果您有任何问题

          【讨论】:

            猜你喜欢
            • 2015-07-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-09
            • 2016-11-20
            • 1970-01-01
            相关资源
            最近更新 更多