日期:2014-05-16 浏览次数:20525 次
今天闲来无事,凭着对大数据和海量数据的浓厚兴趣,把很久之前想写但没写完的程序坚持写完了,下面简要介绍一下吧。
这些程序的主要目的是统计世界大学的信息,主要的数据来源就是人人网了,在人人网上有一个接口,就是在查询大学数据的时候,通过Ajax会向后台发送一个请求(http://s.xnimg.cn/a27085/allunivlist.js),这个请求的返回值就是一个js文件,而这个js文件就是一个很大的json对象,然后通过解析这个json对象就可以得到世界大学的信息了。
原来在论坛里面已经有人对此做了实现(http://www.iteye.com/topic/1118508),不过貌似比较复杂,源码看得都累了,所以自己想做一个实现,简化一些操作。
首先就是要保存下来这个js文件,对保存下来的js文件稍作修改:var allUnivList = [{"id":"00","univs":"",改成[{"id":0,"univs":"",也就是把前面变量定义去掉,因为已经没用了,还有就是把00改成0。基本上就是这些,下面是工程的源代码:
首先说明一下,要看得懂这里的源代码,其实还是需要花费一段时间的,主要就是对那个很大的json对象要很熟悉,下面是我整理出的一个对象框架,希望能让读者受益:(考虑到阅读方便,这里已经做了转码)
[{"id":0,"univs":"","name":"中国","provs":[//像中国这样的,国家没有大学,只有省市级别的才有大学 {"id":1,"univs":[{"id":1001,"name":"清华大学"}...{"id":2000,"name":"中北国际演艺学校"}],"country_id":0,"name":"北京"}, {"id":2,"univs":[{"id":2001,"name":"复旦大学"}...{"id":2169,"name":"上海大学巴士汽车学院"}],"country_id":0,"name":"上海"}, ... {"id":32,"univs":[{"id":32001,"name":"香港大学"}...{"id":32013,"name":"The Open University of HongKong"}],"country_id":0,"name":"香港"}, ... {"id":34,"univs":[{"id":34001,"name":"国立台湾大学"}...{"id":34055,"name":"铭传大学?"}],"country_id":0,"name":"台湾"} ]}, ...//省略了很多国家 {"id":"28","univs":[//像印度这样的,没有省市级别的大学只有国家的大学 {"id":2800001,"name":"University of Delhi"}...{"id":2800008,"name":"St.xavier's College"}], "name":"印度","provs":""}, {"id":"29","univs":[//奥地利也和印度一样只有国家级别的大学 {"id":2900001,"name":"Akademie der bildenden Künste Wien"}...{"id":2900110,"name":"Wirtschaftsuniversit?t Wien "}], "name":"奥地利","provs":""}]
?
?下面就是真正的源代码:
UniBean.java
package com.universities.samples; public class UniBean { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
?
?ProBean.java
package com.universities.samples; public class ProBean { private Integer id; private String univs; private Integer country_id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUnivs() { return univs; } public void setUnivs(String univs) { this.univs = univs; } public Integer getCountry_id() { return country_id; } public void setCountry_id(Integer country_id) { this.country_id = country_id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
?
?ConBean.java
package com.universities.samples; public class ConBean { private Integer id; private String univs; private String name; private String provs; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUnivs() { return univs; } public void setUnivs(String univs) { this.univs = univs; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getProvs() { return provs; } public void setProvs(String provs) { this.provs = provs; } }
?
?University.java
package com.universities.samples; public class University { private Long id;//自动生成。主要为防止冲突的 private String name;//大学名称 private Integer cid;//国家编号 private String county;//国家名 private Integer pid;//省市编号 private String province;//省市名 private Integer uid;//大学在国家里的编号 public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = c