我们都知道,大部分情况下,用Gson解析都是创建JavaBean类去解析的.其实我们有时候去从网络上获取到数据之后只会用到其中某一个字段,或者当前请求的接口后台并没有给一个确定的类型.这就限制了Javabean的作用.
那么有没有一种办法去解决这个问题呢?答案当然是有!我们可以换一个角度去看这个问题,我们利用Javabean,不就是为了取值方便吗?那么java中有什么同样是取值方便的呢?
没错,就是Map,利用键值对,直接取出我们想要的值,json同是这种思想.那么我们用Gson把从网络上请求下来的json直接转换成Map不就好了吗?问题完美解决了.既让我们省的每次都手动创建bean类,又不怕后台小哥哥修改数据源,nice~
String dataStr = response.body().string();
Gson gson = new Gson();
//利用Gson,无Bean类json转Map
Map<String,Object> map = gson.fromJson(dataStr, Map.class);
//获取Map中的数据
final Map<String,Object> data = (Map<String,Object>)map.get("data");
final double total = (double) data.get("total");
final int totalInt = (int) total;
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("MainActivity", ""+totalInt);
mes.setText("当前在线人数 : "+totalInt);
}
});
我们的数据源 :
打印结果 :