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