Android中實現json數據的解析

很多時候,我們從後臺拿到的數據都不是我們想要的格式,這個時候就要對這些數據進行解析,那麼,如何拿到我想要的數據呢?

1. Gson解析json

這裏首先要配置對應的maven

 <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.2</version>
 </dependency>

如果是在Android Studio中使用,直接在build.gradle中的dependencies中添加:

implementation 'com.google.code.gson:gson:2.8.2'

一般從後臺獲取的數據是這樣的:

String res= response.body().string();

創建了gson對象,將json字符轉化爲map對象,直接通過map取值就好了:

Gson gson = new Gson();
Map map = gson.fromJson(res, Map.class);

當然,這個fromJson其實是反序列化,序列化是toJson,有興趣的可以研究研究。

假設我有這麼一個json數據,那麼實際操作就是:

String json = {
	"name":"hsl",
	"age":18
};

Gson gson = new Gson();
Map map = gson.fromJson(json, Map.class);
Log.w(TAG,map.get("name"));
Log.w(TAG,map.get("age"));

這裏需要提醒的一點是,使用gson時,如果我們需要的數據是整型,可能這裏會有點問題,需要處理一下。因爲gson默認會將所有的number類型處理成double,關於這個問題的解決方案,後續會補充上。

不過,下面這種方法就不存在這種問題哦! 

2. fastjson解析json

與上面的 一樣,先要添加maven,不同的是,Gson是goole的,而fastjson是阿里的,不過這兩種解析json數據的方法都挺好用的。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.41</version>
 </dependency>

 Android studio裏添加這個:

implementation 'com.alibaba:fastjson:1.2.41'

與上面的類似,怎麼取出我想要的數據呢?

String responseBody = response.body().string();
final JSONObject obj = JSON.parseObject(responseBody);

舉個小例子:

String json = {
	"name":"hsl",
	"age":18
};

JSONObject obj = JSON.parseObject(json );
Log.e(Tag,obj.getString("name"));
Log.e(Tag,obj.get("age"));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章