2015-04-14 2 views
2

Я пытаюсь разобрать JSON-файл «ssid-number» в исходной папке с GSON. Метод parse_SSID анализирует файл JSON и находит сопоставление для переданной строки SSID. Я получаю на momenat эту ошибку: The method getWifiList() is undefined for the type WifiJSON на этой линии List<WifiJSON> wifijson = obj.getWifiList();. Правильно ли мой подход?Android: разобрать файл JSON в необработанной папке с помощью gson?

JSON файл:

{ 
    "data": [ 
     { 
      "ssid": "KD Privat", 
      "route_number": 1 
     }, 
     { 
      "ssid": "KD WLAN Hotspot", 
      "route_number": 4 
     }, 
     { 
      "ssid": "FR WLAN", 
      "route_number": 6 
     } 
    ] 
} 

метод parse_SSID в MainActivity:

 private int parse_SSID(String ssid) { 

      InputStream raw = getResources().openRawResource(R.raw.ssid_number); 
      Reader rd = new BufferedReader(new InputStreamReader(raw)); 
      Gson gson = new Gson();    
      WifiJSON obj = gson.fromJson(rd, WifiJSON.class); 
      // Now iterate through the list 
      List<WifiJSON> wifijson = obj.getWifiList(); //here is my error. 
      Iterator iterator = wifijson.iterator(); 
      while (iterator.hasNext()) { 
       WifiJSON wifielement = (WifiJSON) iterator.next(); 
       System.out.println(wifielement.getSsid() + "----" 
         + wifielement.getRoute_number()); 
      } 

     } 

WifiJSON класса:

public class WifiJSON { 
    private String ssid; 
    private int route_number; 

    public WifiJSON(String ssid, int route_number) { 
     this.ssid = ssid; 
     this.route_number = route_number; 

    } 

    private String getSsid() { 
     return ssid; 
    } 

    private void setSsid(String ssid) { 
     this.ssid = ssid; 
    } 

    private int getRoute_number() { 
     return route_number; 
    } 

    private void setRoute_number(int route_number) { 
     this.route_number = route_number; 
    } 

    @Override 
    public String toString() { 
     return "WifiJSON [ssid=" + ssid + ", route_number=" + route_number 
       + "]"; 
    } 



} 

WiFiJSONList класс:

import java.util.ArrayList; 

public class WiFiJSONList { 
    private ArrayList<WifiJSON> data; 

    public ArrayList<WifiJSON> getWifiList() { 
     return data; 
    } 
    public void setWifiList(ArrayList<WifiJSON> wifiList) { 
     this.data = wifiList; 
    } 
} 
+0

Не было бы проще просто сделать JSONObject? – Longi

+0

если он работает, тогда это нормально, но я использовал gson, потому что я прочитал, что это самый простой подход. Я добавлю еще SSID и route_number. Около 400 пар в файл JSON. –

+0

. Перечитайте [this] (http://stackoverflow.com/a/29633998/2835243) ответ, который вы получили раньше. 'getWifiList' является получателем в классе' WiFiJSONList'. Тем не менее, вы вызываете его на объект WifiJSON. – TheWanderingMind

ответ

3

Это:

WifiJSON obj = gson.fromJson(rd, WifiJSON.class); 

должен быть

WiFiJSONList obj = gson.fromJson(rd, WiFiJSONList.class); 
+1

Вы имеете в виду 'WiFiJSONList obj = gson.fromJson (rd, WiFiJSONList.class);'? – TheWanderingMind

+0

Неплохо, спасибо –

+0

где мне поставить параметр «ssid» в emthod, чтобы получить правильный номер маршрута? parse_SSID (String ssid) –

Смежные вопросы