2015-04-14 30 views
2

我有一個方法,它返回最強的WiFi訪問點的SSID。映射的Tha數據位於原始文件夾中的文件名「ssid_number.txt」中。如果最強大的WiFi接入點「KD WLAN Hotspot」是,我如何在GSON庫中解析這個文件以獲得數字4?Android:如何使用GSON庫解析JSON文件?

{ 
    "KD Privat": 1, 
    "KD WLAN Hotspot": 4, 
    "treeWifi": 9, 
    "cafeWifi": 5 //I have here more that 200 WIFI access point 

} 
+0

你有什麼試過? http://stackoverflow.com/questions/5490789/json-parsing-using-gson-for-java – RvdK

回答

3

我做了下一個方法。

我從網址中拉出了JSON字符串。然後,

Gson gson = new Gson(); // create Gson obj 
currentResponse = gson.fromJson(resultJSON, City.class); 

currentResponse是json.toString()輸出。

接下來,爲json輸出創建新的類,其中所有字段對應於json。看看我的工作代碼:

public class City { 

@SerializedName("name") 
public String cityName; 

public String getCityName() { 
    return cityName; 
    } 
} 

在你的情況下,它會像:

public class WiFi { 

@SerializedName("cafeWifi") 
public int wiFiAmount; 

public int getWiFiAmount() { 
    return wiFiAmount; 
    } 
} 

通過這種方法讓你的無線網絡連接數量:

WiFi wifi = new WiFi(); 
int a = wifi.getWiFiAmount(); 
+0

但它會如何知道「原始」文件夾中的json文件是? –

0

您的JSON響應創建POJO。

public class JsonResponsePojo { 

    @SerializedName("KD Privat") 
    @Expose 
    private Integer KDPrivat; 
    @SerializedName("KD WLAN Hotspot") 
    @Expose 
    private Integer KDWLANHotspot; 
    @Expose 
    private Integer treeWifi; 
    @Expose 
    private Integer cafeWifi; 

    /** 
    * 
    * @return 
    * The KDPrivat 
    */ 
    public Integer getKDPrivat() { 
    return KDPrivat; 
    } 

    /** 
    * 
    * @param KDPrivat 
    * The KD Privat 
    */ 
    public void setKDPrivat(Integer KDPrivat) { 
    this.KDPrivat = KDPrivat; 
    } 

    /** 
    * 
    * @return 
    * The KDWLANHotspot 
    */ 
    public Integer getKDWLANHotspot() { 
    return KDWLANHotspot; 
    } 

    /** 
    * 
    * @param KDWLANHotspot 
    * The KD WLAN Hotspot 
    */ 
    public void setKDWLANHotspot(Integer KDWLANHotspot) { 
    this.KDWLANHotspot = KDWLANHotspot; 
    } 

    /** 
    * 
    * @return 
    * The treeWifi 
    */ 
    public Integer getTreeWifi() { 
    return treeWifi; 
    } 

    /** 
    * 
    * @param treeWifi 
    * The treeWifi 
    */ 
    public void setTreeWifi(Integer treeWifi) { 
    this.treeWifi = treeWifi; 
    } 

    /** 
    * 
    * @return 
    * The cafeWifi 
    */ 
    public Integer getCafeWifi() { 
    return cafeWifi; 
    } 

    /** 
    * 
    * @param cafeWifi 
    * The cafeWifi 
    */ 
    public void setCafeWifi(Integer cafeWifi) { 
    this.cafeWifi = cafeWifi; 
    } 

    } 

讀的wifi -hotspot

Gson gson=new Gson(); 
JsonResponsePojo data=gson.fromJson(responseString, JsonResponsePojo.class); 
String kdWLanHotSpot=data.getKDPrivat(); 
+0

您的評價很簡單,但需要太多的代碼。我有超過200個WIFI接入點。 –

1

看着你的數據看來你的標識符不是恆定的。

在這種情況下,它會工作,如果你使用一個typemap。所以像這樣:

HashMap<String, Integer> mMap = null; 
Type type = new TypeToken<HashMap<String, Integer>>() {}.getType(); 
mMap = new Gson().fromJson(json, type);