Android:如何使用GSON库解析JSON文件?

时间:2015-04-14 12:42:05

标签: android json gson

我有一个返回最强WiFi接入点SSID的方法。映射的Tha数据位于原始文件夹中的文件名“ssid_number.txt”中。如果有最强的WiFi接入点“KD WLAN Hotspot”,如何在我的情况下使用GSON库解析此文件以获得数字4?

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

}

3 个答案:

答案 0 :(得分: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 wifi = new WiFi();
int a = wifi.getWiFiAmount();

答案 1 :(得分:1)

查看您的数据似乎您的标识符不是常量。

在这种情况下,如果您使用类型图,它将起作用。所以像这样:

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

答案 2 :(得分: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();