12306模拟get方法 ——json解析数据
public class jsontest { private String html; public static String []query={"station_train_code","from_station_name","to_station_name"}; public jsontest(String response){ html=response; } public static void main(String []args) { String date="2014-04-16"; String train_date="leftTicketDTO.train_date"; String from_station="leftTicketDTO.from_station"; //leftTicketDTO.train_date=2014-04-16&leftTicketDTO. //from_station=HZH&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT // params.add(new NameValuePair("leftTicketDTO.train_date",data)); Map<String,String> params=new LinkedHashMap<String,String>(); //treemap,以及hashmap顺序不一定对的,与插入顺序无关 params.put(train_date,date); params.put(from_station,"HZH"); params.put("leftTicketDTO.to_station", "CSQ"); params.put("purpose_codes", "ADULT"); getbook get=new getbook(bookInfo.get_book,params); get.init(); String response=get.getreponse(); //json myjson=new json(); try { JSONObject json=new JSONObject(response); JSONArray data=json.getJSONArray("data"); //json比Google的gson好用一点 int num=data.length(); JSONObject train=null; JSONObject temp=null; String str=null; for(int i=0;i<num;i++){ train=data.getJSONObject(i); temp=train.getJSONObject("queryLeftNewDTO"); for(int j=0;j<3;j++){ str=temp.getString(query[j]); System.out.println(query[j]+":"+str); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } //System.out.println(response); }
主要难点在于参数的构造,hashmap以及treemap的顺序与插入的顺序不一致,所以只能用list或者用linkedHashmap,其次在于json的解析,尝试过google的gson,不好用,不过有一大优势,gson可以把对象序列化为json,或者从json中构建对象,最后用json解析实现的。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。