我有一个看起来像这样的JSON对象:
"TripList":{
"noNamespaceSchemaLocation":"http://api.vasttrafik.se/v1/hafasRestTrip.xsd",
"servertime":"11:27",
"serverdate":"2013-04-02",
"Trip":[{
"Leg":{
"name":"Spårvagn 3",
"type":"TRAM",
"id":"9015014500300079",
"direction":"Kålltorp",
"fgColor":"#004b85",
"bgColor":"#ffffff",
"stroke":"Solid",
"accessibility":"wheelChair",
"Origin":{
"name":"Brunnsparken, Göteborg",
"type":"ST",
"id":"9022014001760004",
"routeIdx":"19",
"time":"11:27",
"date":"2013-04-02",
"track":"D ",
"rtTime":"11:31",
"rtDate":"2013-04-02",
"$":"\n"
}
获取Leg对象内的名称工作正常。 但是,如果我想在Origin对象中获取时间,我该怎么做?
到目前为止,我的代码是这样的:
JSONParser parser = new JSONParser();
Object obj = parser.parse(Planner.getPlanner().getJsonDataForTrip(Planner.getPlanner().getStartLocationID(), Planner.getPlanner().getDestinationID()));
JSONObject topObject = (JSONObject) obj;
JSONObject locationList = (JSONObject) topObject.get("TripList");
JSONArray array = (JSONArray) locationList.get("Trip");
Iterator<JSONObject> iterator = array.iterator();
while (iterator.hasNext()) {
JSONObject jsonObj = iterator.next();
jsonObj = (JSONObject) jsonObj.get("Leg");
String line = (String) jsonObj.get("name");
Planner.getPlanner().setLines(line);
System.out.println(jsonObj.get("Origin"));
Long time = (Long) jsonObj.get("time");
String track =(String) jsonObj.get("track");
System.out.println(line);
System.out.println(time);
System.out.println(track);
}
}
And in the console it say like this :
{ “routeIdx”: “19”, “ID”: “9022014001760004”, “rtDate”: “20130402”, “时间”: “15点02分”, “$”: “\ n”,“名称: “Brunnsparken,Göteborg”,“track”:“D”,“rtTime”:“15:06”,“date”:“2013-04-02”,“type”:“ST”}
Spårvagn3
空
空
所以基本上我已经得到了Spårvang3这个名字。但我想抽出时间。
因此,我尝试使用jsonObj.get("time");
离开的时间正在给出null
值。
问题是什么,如何从“Origin”对象中获取时间?
答案 0 :(得分:2)
由于“时间”是“Origin”对象的一部分,你需要首先提取“Origin” - 对象:
JSONOject origin = (JSONObject) jsonObj.get("Origin");
然后:
String time = origin.getString("time");
答案 1 :(得分:1)
您正在获取'Leg'对象的'time'和'track'属性,而不是'Origin'对象。 它应该是:
JSONParser parser = new JSONParser();
Object obj = parser.parse(Planner.getPlanner().getJsonDataForTrip(Planner.getPlanner().getStartLocationID(), Planner.getPlanner().getDestinationID()));
JSONObject topObject = (JSONObject) obj;
JSONObject locationList = (JSONObject) topObject.get("TripList");
JSONArray array = (JSONArray) locationList.get("Trip");
Iterator<JSONObject> iterator = array.iterator();
while (iterator.hasNext()) {
JSONObject jsonObj = iterator.next();
jsonObj = (JSONObject) jsonObj.get("Leg");
String line = (String) jsonObj.get("name");
Planner.getPlanner().setLines(line);
System.out.println(jsonObj.get("Origin"));
// Added this line
jsonObj = (JSONObject) jsonObj.get("Origin");
String time = (String) jsonObj.get("time");
String track =(String) jsonObj.get("track");
System.out.println(line);
System.out.println(time);
System.out.println(track);
}
答案 2 :(得分:0)
执行以下代码
JSONOject origin = (JSONObject) jsonObj.get("Origin");
String time = (String) origin.getString("time");
他们使用SimpleDateFormat来解析时间字符串并获取日期对象