Re: [問題]Android 如何讀Json

作者: givemepass (λ)   2014-10-20 21:33:07
※ 引述《sa1993 (竹)》之銘言:
: 小弟寫不出來 還是新手 求高人指點 謝謝
: 下面是我的code Log.e有印出來 可是要印在ListView就不能
: https://docs.google.com/document/d/1UT4PhNd2mw8T3QsEVsRSL9NkWR0zEj-qRFKU-If7CPw/edit?usp=sharing
教你一招 Gson 超簡單
首先先把gson的lib丟到你的專案
然後就可以開始使用了
先宣告一個物件
Gson gson = new Gson();
接著你已經抓到網址內的json file了
轉成字串以後
利用這個網站 可以看到json的對應關係
http://json.parser.online.fr/
可以清楚看到你的json長這樣
[
{
"chanel":"FM",
"week":"日",
"start_time":"09:00",
"end_time":"10:00",
"program":"勞動聲活",
"DJ":"【北市勞動局合作】"
}, ...
]
其實蠻簡單的 就一種物件被包在陣列裡面
那麼就宣告一個類別來裝這個物件
class MyJsonObj{
@SerializedName("chanel")
private String chanelStr;
@SerializedName("week")
private String weekStr;
@SerializedName("start_time")
private String startTime;
@SerializedName("end_time")
private String endTime;
@SerializedName("DJ")
private String djStr;
public String getChanelStr() {
return chanelStr;
}
public void setChanelStr(String chanelStr) {
this.chanelStr = chanelStr;
}
public String getWeekStr() {
return weekStr;
}
public void setWeekStr(String weekStr) {
this.weekStr = weekStr;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getDjStr() {
return djStr;
}
public void setDjStr(String djStr) {
this.djStr = djStr;
}
}
上面getter setter就利用IDE來產生
這邊只要記住一個關鍵點 就是annotation
一定要對應到json的key 不然會有錯
觀察一下json 他是由一個array包起來的
所以我直接用arraylist把整個物件包起來
Gson gson = new Gson();
Type listType = new TypeToken<ArrayList<MyJsonObj>>() {}.getType();
ArrayList<MyJsonObj> jsonArr = gson.fromJson(jsonStr, listType);
for(MyJsonObj obj : jsonArr){
System.out.println("obj chanel:" + obj.getChanelStr());
System.out.println("obj start time:" + obj.getStartTime());
System.out.println("obj end time:" + obj.getEndTime());
System.out.println("obj week:" + obj.getWeekStr());
System.out.println("obj DJ:" + obj.getDjStr());
}
jsonStr就是從你連結的json抓出來的
關鍵在黃色的字那2行
由於是陣列包物件 你就要這樣寫
可以參考一下這篇
http://kaihgcode.blogspot.tw/2014/08/apiapijsonstring-gson-json.html
import要用到這些
import java.lang.reflect.Type;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
那麼看結果
obj chanel:FM
obj start time:09:00
obj end time:10:00
obj week:日
obj DJ:【北市勞動局合作】
obj chanel:FM
obj start time:10:00
obj end time:11:00
obj week:六
obj DJ:IC之音合作
....
剩下的我就不列了
gson就是這麼簡單
他也提供物件轉回json的功能
簡單來說他就是一個轉接器
幫你把json資料跟物件轉來轉去的一種工具
其實很多工具都用這種類型在轉換了
例如資料庫 ORMLite也很方便
讓你不用再去記如何開啟查詢資料庫 也避免掉很多低級錯誤
參考看看XD
作者: kewang (652公車)   2014-10-20 21:41:00
用3310回的神人!!!
作者: laiair (大頭)   2014-10-21 09:57:00
gson真的好用...而且code變得很簡潔
作者: hyouun (彩音)   2014-10-21 15:34:00
3310XDDD 推gson好用
作者: millerindex (LL)   2014-11-11 15:45:00
最近剛好用到 推

Links booklink

Contact Us: admin [ a t ] ucptt.com