Java 解析JSON以使用Asynctask获取所有详细信息 { “响应代码”:200, “借方”:3, “位置”:“列车已到达目的地,晚点5分钟”, “火车”:{ “编号”:“12046”, “名称”:“CDG NDLS SHTBDI” }, “路线”:[ { “否”:1, “天”:0, “车站”:{ “姓名”:“昌迪加尔”, “代码”:“CDG” }, “has_到达”:false, “你已经离开了”:是的, “距离”:0, “scharr”:“来源”, “schdep”:“12:00”, “actarr”:“00:00”, “actdep”:“12:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { "否":二,, “天”:0, “车站”:{ “名称”:“AMBALA CANT JN”, “代码”:“UMB” }, “已经到了”:是的, “你已经离开了”:是的, “距离”:67, “沙尔”:“12:40”, “schdep”:“12:42”, “actarr”:“12:40”, 《行动纲领》:“12:42”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { “否”:3, “天”:0, “车站”:{ “名称”:“新德里”, “代码”:“NDLS” }, “已经到了”:是的, “已经离开”:错, “距离”:265, “沙尔”:“15:25”, “schdep”:“目的地”, “actarr”:“15:30”, “actdep”:“00:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:5 } ] } 公务舱列车状态{ 公共静态响应代码; 私有int序列号; 私有字符串调度; 私有字符串; 公共静态串站; 公共债务; 到达的私有字符串状态; 二等兵来了,; 私家侦探已经离去; 拉特明私人酒店; 私有字符串实际值; 私有字符串scheduleArrivalDate; 公共静态字符串位置; 公共字符串名称; 公共字符串getName() { 返回getName(); } 公共void集合名(字符串名) { this.name=name; } 公共布尔值isHasArrived() { 返回已经到达; } 公共void setHasArrived(布尔值hasArrived) { this.hasarigned=hasarigned; } 公共布尔值() { 返回已离开; } public void sethaseended(布尔haseended) { this.hasedecented=hasedecented; } public int getLatemin() { 返回latemin; } 公共void setLatemin(int latemin) { this.latemin=latemin; } 公共无效设置序列号(内部序列号) { this.serialNo=serialNo; } 公共字符串getScheduleArrival() { 返回预定到达时间; } public void setScheduleArrival(字符串scheduleArrival) { this.scheduleArrival=scheduleArrival; } 公共字符串getActualRival() { 返回实际竞争对手; } public void setActualRival(字符串ActualRival) { this.actualarival=actualarival; } 公共字符串getStation() { 返回站; } 公共空间站(字符串站) { 这个站=站; } 公共字符串getStatusOfArrival() { 返回到达状态; } public void setStatusOfArrival(字符串状态OfArrival) { this.statusOfArrival=到达状态; } 公共字符串getActualArrivalDate() { 返回实际利率; } public void setActualArrivalDate(字符串actualArrivalDate) { this.actualArrivalDate=actualArrivalDate; } 公共字符串getScheduleArrivalDate() { 返回计划到达日期; } 公共无效setScheduleArrivalDate(字符串scheduleArrivalDate) { this.scheduleArrivalDate=scheduleArrivalDate; } } 公共类TrainStatusParser{ 公共静态列表源(字符串内容){ 尝试 { JSONObject JSONObject=新的JSONObject(内容); List trainList=new ArrayList(); TrainStatus.responseCode=jsonObject.getInt(“响应代码”); TrainStatus.position=jsonObject.getString(“位置”); TrainStatus.debit=jsonObject.getInt(“debit”); JSONArray route=jsonObject.getJSONArray(“route”); 对于(inti=0;i
请尝试以下代码Java 解析JSON以使用Asynctask获取所有详细信息 { “响应代码”:200, “借方”:3, “位置”:“列车已到达目的地,晚点5分钟”, “火车”:{ “编号”:“12046”, “名称”:“CDG NDLS SHTBDI” }, “路线”:[ { “否”:1, “天”:0, “车站”:{ “姓名”:“昌迪加尔”, “代码”:“CDG” }, “has_到达”:false, “你已经离开了”:是的, “距离”:0, “scharr”:“来源”, “schdep”:“12:00”, “actarr”:“00:00”, “actdep”:“12:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { "否":二,, “天”:0, “车站”:{ “名称”:“AMBALA CANT JN”, “代码”:“UMB” }, “已经到了”:是的, “你已经离开了”:是的, “距离”:67, “沙尔”:“12:40”, “schdep”:“12:42”, “actarr”:“12:40”, 《行动纲领》:“12:42”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { “否”:3, “天”:0, “车站”:{ “名称”:“新德里”, “代码”:“NDLS” }, “已经到了”:是的, “已经离开”:错, “距离”:265, “沙尔”:“15:25”, “schdep”:“目的地”, “actarr”:“15:30”, “actdep”:“00:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:5 } ] } 公务舱列车状态{ 公共静态响应代码; 私有int序列号; 私有字符串调度; 私有字符串; 公共静态串站; 公共债务; 到达的私有字符串状态; 二等兵来了,; 私家侦探已经离去; 拉特明私人酒店; 私有字符串实际值; 私有字符串scheduleArrivalDate; 公共静态字符串位置; 公共字符串名称; 公共字符串getName() { 返回getName(); } 公共void集合名(字符串名) { this.name=name; } 公共布尔值isHasArrived() { 返回已经到达; } 公共void setHasArrived(布尔值hasArrived) { this.hasarigned=hasarigned; } 公共布尔值() { 返回已离开; } public void sethaseended(布尔haseended) { this.hasedecented=hasedecented; } public int getLatemin() { 返回latemin; } 公共void setLatemin(int latemin) { this.latemin=latemin; } 公共无效设置序列号(内部序列号) { this.serialNo=serialNo; } 公共字符串getScheduleArrival() { 返回预定到达时间; } public void setScheduleArrival(字符串scheduleArrival) { this.scheduleArrival=scheduleArrival; } 公共字符串getActualRival() { 返回实际竞争对手; } public void setActualRival(字符串ActualRival) { this.actualarival=actualarival; } 公共字符串getStation() { 返回站; } 公共空间站(字符串站) { 这个站=站; } 公共字符串getStatusOfArrival() { 返回到达状态; } public void setStatusOfArrival(字符串状态OfArrival) { this.statusOfArrival=到达状态; } 公共字符串getActualArrivalDate() { 返回实际利率; } public void setActualArrivalDate(字符串actualArrivalDate) { this.actualArrivalDate=actualArrivalDate; } 公共字符串getScheduleArrivalDate() { 返回计划到达日期; } 公共无效setScheduleArrivalDate(字符串scheduleArrivalDate) { this.scheduleArrivalDate=scheduleArrivalDate; } } 公共类TrainStatusParser{ 公共静态列表源(字符串内容){ 尝试 { JSONObject JSONObject=新的JSONObject(内容); List trainList=new ArrayList(); TrainStatus.responseCode=jsonObject.getInt(“响应代码”); TrainStatus.position=jsonObject.getString(“位置”); TrainStatus.debit=jsonObject.getInt(“debit”); JSONArray route=jsonObject.getJSONArray(“route”); 对于(inti=0;i,java,android,arrays,json,Java,Android,Arrays,Json,请尝试以下代码 { "response_code": 200, "debit": 3, "position": "Train has reached Destination and late by 5 minutes", "train": { "number": "12046", "name": "CDG NDLS SHTBDI" }, "route": [ { "no": 1, "day": 0,
{
"response_code": 200,
"debit": 3,
"position": "Train has reached Destination and late by 5 minutes",
"train": {
"number": "12046",
"name": "CDG NDLS SHTBDI"
},
"route": [
{
"no": 1,
"day": 0,
"station": {
"name": "CHANDIGARH",
"code": "CDG"
},
"has_arrived": false,
"has_departed": true,
"distance": 0,
"scharr": "Source",
"schdep": "12:00",
"actarr": "00:00",
"actdep": "12:00",
"scharr_date": "19 Nov 2015",
"actarr_date": "19 Nov 2015",
"latemin": 0
},
{
"no": 2,
"day": 0,
"station": {
"name": "AMBALA CANT JN",
"code": "UMB"
},
"has_arrived": true,
"has_departed": true,
"distance": 67,
"scharr": "12:40",
"schdep": "12:42",
"actarr": "12:40",
"actdep": "12:42",
"scharr_date": "19 Nov 2015",
"actarr_date": "19 Nov 2015",
"latemin": 0
},
{
"no": 3,
"day": 0,
"station": {
"name": "NEW DELHI",
"code": "NDLS"
},
"has_arrived": true,
"has_departed": false,
"distance": 265,
"scharr": "15:25",
"schdep": "Destination",
"actarr": "15:30",
"actdep": "00:00",
"scharr_date": "19 Nov 2015",
"actarr_date": "19 Nov 2015",
"latemin": 5
}
]
}
public class TrainStatus {
public static int responseCode;
private int serialNo;
private String scheduleArrival;
private String actualArrival;
public static String station;
public static int debit;
private String statusOfArrival;
private boolean hasArrived;
private boolean hasDeparted;
private int latemin;
private String actualArrivalDate;
private String scheduleArrivalDate;
public static String position;
public String name;
public String getName()
{
return getName();
}
public void setName(String name)
{
this.name=name;
}
public boolean isHasArrived()
{
return hasArrived;
}
public void setHasArrived(boolean hasArrived)
{
this.hasArrived = hasArrived;
}
public boolean isHasDeparted()
{
return hasDeparted;
}
public void setHasDeparted(boolean hasDeparted)
{
this.hasDeparted = hasDeparted;
}
public int getLatemin()
{
return latemin;
}
public void setLatemin(int latemin)
{
this.latemin = latemin;
}
public void setSerialNo(int serialNo)
{
this.serialNo = serialNo;
}
public String getScheduleArrival()
{
return scheduleArrival;
}
public void setScheduleArrival(String scheduleArrival)
{
this.scheduleArrival = scheduleArrival;
}
public String getActualArrival()
{
return actualArrival;
}
public void setActualArrival(String actualArrival)
{
this.actualArrival = actualArrival;
}
public String getStation()
{
return station;
}
public void setStation(String station)
{
this.station = station;
}
public String getStatusOfArrival()
{
return statusOfArrival;
}
public void setStatusOfArrival(String statusOfArrival)
{
this.statusOfArrival = statusOfArrival;
}
public String getActualArrivalDate()
{
return actualArrivalDate;
}
public void setActualArrivalDate(String actualArrivalDate)
{
this.actualArrivalDate = actualArrivalDate;
}
public String getScheduleArrivalDate()
{
return scheduleArrivalDate;
}
public void setScheduleArrivalDate(String scheduleArrivalDate)
{
this.scheduleArrivalDate = scheduleArrivalDate;
}
}
public class TrainStatusParser {
public static List<TrainStatus> parseFeed(String content){
try
{
JSONObject jsonObject = new JSONObject(content);
List<TrainStatus> trainList = new ArrayList<>();
TrainStatus.responseCode = jsonObject.getInt("response_code");
TrainStatus.position = jsonObject.getString("position");
TrainStatus.debit=jsonObject.getInt("debit");
JSONArray route = jsonObject.getJSONArray("route");
for(int i=0;i<route.length();i++)
{
JSONObject routeObject = route.getJSONObject(i);
TrainStatus trainStatus = new TrainStatus();
if (jsonObject.has("station"))
{
JSONObject addressObject = jsonObject.getJSONObject("station");
trainStatus.name=addressObject.getString("name");
}
trainStatus.setSerialNo(routeObject.getInt("no"));
trainStatus.setScheduleArrival(routeObject.getString("scharr"));
trainStatus.setActualArrival(routeObject.getString("actarr"));
trainStatus.setStatusOfArrival(routeObject.getString("status"));
trainStatus.setHasArrived(routeObject.getBoolean("has_arrived"));
trainStatus.setHasDeparted(routeObject.getBoolean("has_departed"));
trainStatus.setLatemin(routeObject.getInt("latemin"));
trainStatus.setActualArrivalDate(routeObject.getString("actarr_date"));
trainStatus.setScheduleArrivalDate(routeObject.getString("scharr_date"));
trainList.add(trainStatus);
}
return trainList;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
}
对于(int i=0;i在您发布的代码中使用来自Google call的库来解析每条路线,您有:
for(int i=0;i<route.length();i++) {
JSONObject routeObject = route.getJSONObject(i);
TrainStatus trainStatus = new TrainStatus();
JSONObject jsonObject_station = routeObject.getJSONObject("station");
String stationname = jsonObject_station.getString("name");
String code = jsonObject_station.getString("code");
Log.d("checkvalue", " " + stationname + " " + code);
trainStatus.setSerialNo(routeObject.getInt("no"));
trainStatus.setScheduleArrival(routeObject.getString("scharr"));
trainStatus.setActualArrival(routeObject.getString("actarr"));
trainStatus.setStatusOfArrival(routeObject.getString("status"));
trainStatus.setHasArrived(routeObject.getBoolean("has_arrived"));
trainStatus.setHasDeparted(routeObject.getBoolean("has_departed"));
trainStatus.setLatemin(routeObject.getInt("latemin"));
trainStatus.setActualArrivalDate(routeObject.getString("actarr_date"));
trainStatus.setScheduleArrivalDate(routeObject.getString("scharr_date"));
trainList.add(trainStatus);
}
这里似乎是输入错误导致了您的问题。您正在调用jsonObject.has(“station”)
,而您应该调用routeObject.has(“station”)
。类似地,在if
语句中,您应该将jsonObject.getJSONObject(“station”)更改为routeObject.getJSONObject(“station”)
Json解析似乎没问题。但您是指TrainStatus.name=…
还是TrainStatus.setName(…)
?还是正确?是否有错误消息?如果没有,从分析中检索到的值是什么?TrainStatus是一个类,其中定义了名称,但没有错误消息,但通过更改If(jsonObject)站点名称为空为了简化这两条线路,我将从以下位置获取JSONObject:u station=routeObject.getJSONObject(“车站”);TrainStatus.station=from\u station.getString(“名称”);每个列表中都有相同的站名,您必须基于routeObject
进行解析,我希望这会有所帮助you@SangamNayak它应该仔细检查,,,没问题,把你的代码怎么解析出来Stationname@SangamNayak陈怡
JSONObject routeObject = route.getJSONObject(i);
TrainStatus trainStatus = new TrainStatus();
if (jsonObject.has("station"))
{
JSONObject addressObject = jsonObject.getJSONObject("station");
trainStatus.name=addressObject.getString("name");
}