Reputation: 2380
I have a method that gets the strongest Wifi acces points signal, which avialabe is and returns SSID string, all these SSID strings are stored in the raw folder in JSON file: How can I access the file in the raw folder and parse it with Gson to get for example the route_number 6 if the SSID "FR WLAN" is?
ssid_number JSON file:
{
"data": [
{
"ssid": "KD Privat",
"route_number": 1
},
{
"ssid": "KD WLAN Hotspot",
"route_number": 4
},
{
"ssid": "FR WLAN",
"route_number": 6
}
]
}
WifiJSON class:
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
+ "]";
}
}
parse_SSID in the MainActivity:
//parse the storeed json file"ssid_number" and get the route_number back.
private int parse_SSID(String route_string) {
// TODO Auto-generated method stub
InputStream is = getResources().openRawResource(R.raw.ssid_number);
Gson gson = new Gson();
WifiJSON obj = gson.fromJson(route_string, WifiJSON.class);
return 0;
}
}
WiFiJSONList class:
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;
}
}
Upvotes: 1
Views: 1681
Reputation: 233
I tried your code, and made some modification. This worked for me. For checking purpose, I have hardcoded the json string. You can read from raw or assets folder and move ahead.
private int parse_SSID(String route_string) {
// TODO Auto-generated method stub
Gson gson = new Gson();
WiFiJSONList obj = gson.fromJson(route_string, WiFiJSONList.class);
//Now iterate through the list
List<WiFiJSON> wifijson = obj.getWifiList();
Iterator iterator = wifijson.iterator();
while (iterator.hasNext()) {
WiFiJSON wifielement = (WiFiJSON) iterator.next();
System.out.println(wifielement.getSsid() + "----" + wifielement.getRoute_number());
}
return 0;
}
Usage will be like this: (Actually, while parsing json using gson, your json string should be a single object, not like an array directly.)
String json = "{\"data\": [{\"ssid\": \"KD Privat\",\"route_number\": 1},{\"ssid\": \"KD WLAN Hotspot\",\"route_number\": 4},{\"ssid\": \"FR WLAN\",\"route_number\": 6}]}";
parse_SSID(json);
public class WiFiJSON {
private String ssid;
private int route_number;
public String getSsid() {
return ssid;
}
public void setSsid(String ssid) {
this.ssid = ssid;
}
public int getRoute_number() {
return route_number;
}
public void setRoute_number(int route_number) {
this.route_number = route_number;
}
}
public class WiFiJSONList {
private ArrayList<WiFiJSON> data;
public ArrayList<WiFiJSON> getWifiList() {
return data;
}
public void setWifiList(ArrayList<WiFiJSON> wifiList) {
this.data = wifiList;
}
}
Let me know if this worked.
Upvotes: 1