导入json文件数据到数据库
2019-08-15 本文已影响0人
麻烦大麻要坚强
今天主要是做一个功能就是把json文件的数据转化为对象然后导入到数据库中,是一个关于城市的json文件数据。
先查看json内容分析建立一个跟json属性对应的对象模型。
可以看到只有4个属性,最后属性是一个list包含市
市的list下面又包含区
基本可以认定只有3层,需要创建3个对象,一层套一层
先建立第一个省对象
public class ZonResponse {
private String adcode;
private String name;
private String p;
private List<Zones> districts;
//省略get/set
}
第二个市对象
public class Zones{
private String adcode;
private String name;
private String p;
private List<Zone> districts;
//省略get/set
}
第三个区对象
public class Zone{
private String adcode;
private String name;
private String p;
//省略get/set
}
然后用流对象找到这个文件的位置,然后把内容拼接成一个字符串返回。
public static String readJsonData(String filePahtName) throws Exception {
StringBuilder result = new StringBuilder();
File file = new File(filePahtName);
//构造一个BufferedReader类来读取文件
BufferedReader br = new BufferedReader(new FileReader(file));
String s = null;
//使用readLine方法,一次读一行
while ((s = br.readLine()) != null) {
result.append(System.lineSeparator() + s);
}
br.close();
return result.toString();
}
在构建一个main方法或者测试单元里面调用这个方法传入路径就可以获取拼接号的字符串了,废话不多说直接上代码。
@Test
public void tokens() throws Exception {
//传入路径得到字符串
String s = readJsonData("D:\\Android\\eclipse\\jincaokeji\\src\\main\\webapp\\js\\areazone.json");
//这里使用的是阿里的fastjson把字符串转换成list因为是多个省
JSONArray jsonList = JSON.parseArray(s);
for (int i = 0; i < jsonList.size(); i++) {
//获取到每一个省
String zoneString = josnList.getString(i);
//把省字符串转换成对象
Zons zons = JSON.parseObject(zoneString, ZonResponse .class);
Zone zone = getZone(zons.getAdcode(), zons.getName(), zons.getP(), null);
//添加数据库 **Dao.addZone(zone);
System.out.println("省:"+zone);
//从省里获取到每一个市
List<ZoneResponse> districts = zons.getDistricts();
if (districts!=null){
for (ZoneResponse district : districts) {
String adcode = district.getAdcode();
Zone city = getZone(adcode, zons.getAdcode(), district.getName(), district.getP(), zons.getName() + ","+district.getName());
//添加数据库 **Dao.addZone(zone);
System.out.println(" 市 :"+city);
//获取每一个区
List<Zones> countys = district.getDistricts();
if (countys != null){
for (Zones county : countys) {
Zone zoneCounty = getZone(county.getAdcode(), adcode, county.getName(), county.getP(), zons.getName() + "," + district.getName() + "," + county.getName());
//添加数据库 **Dao.addZone(zone);
System.out.println(" 县 :"+zoneCounty);
}
}
}
}
}
}
一个构建对象的方法
//这是我数据库的格式对应的对象
public Zone getZone(String id,String par,String name,String spell,String full){
Zone zone = new Zone();
zone.setZoneid(id);
//父类id
zone.setParentzone(par);
zone.setZonename(name);
zone.setSpell(spell);
zone.setFullname(full);
return zone;
}
执行方法就可以看到
省:Zone [zoneid=12, parentzone=0, zonename=天津市, spell=T, fullname=null]
市 :Zone [zoneid=1201, parentzone=12, zonename=天津城区, spell=T, fullname=天津市,天津城区]
县 :Zone [zoneid=120103, parentzone=1201, zonename=河西区, spell=H, fullname=天津市,天津城区,河西区]
县 :Zone [zoneid=120102, parentzone=1201, zonename=河东区, spell=H, fullname=天津市,天津城区,河东区]
县 :Zone [zoneid=120105, parentzone=1201, zonename=河北区, spell=H, fullname=天津市,天津城区,河北区]
县 :Zone [zoneid=120101, parentzone=1201, zonename=和平区, spell=H, fullname=天津市,天津城区,和平区]
县 :Zone [zoneid=120115, parentzone=1201, zonename=宝坻区, spell=B, fullname=天津市,天津城区,宝坻区]
县 :Zone [zoneid=120112, parentzone=1201, zonename=津南区, spell=J, fullname=天津市,天津城区,津南区]
县 :Zone [zoneid=120110, parentzone=1201, zonename=东丽区, spell=D, fullname=天津市,天津城区,东丽区]
县 :Zone [zoneid=120118, parentzone=1201, zonename=静海区, spell=J, fullname=天津市,天津城区,静海区]
县 :Zone [zoneid=120117, parentzone=1201, zonename=宁河区, spell=N, fullname=天津市,天津城区,宁河区]
县 :Zone [zoneid=120119, parentzone=1201, zonename=蓟州区, spell=J, fullname=天津市,天津城区,蓟州区]
县 :Zone [zoneid=120116, parentzone=1201, zonename=滨海新区, spell=B, fullname=天津市,天津城区,滨海新区]
县 :Zone [zoneid=120113, parentzone=1201, zonename=北辰区, spell=B, fullname=天津市,天津城区,北辰区]
县 :Zone [zoneid=120114, parentzone=1201, zonename=武清区, spell=W, fullname=天津市,天津城区,武清区]
县 :Zone [zoneid=120106, parentzone=1201, zonename=红桥区, spell=H, fullname=天津市,天津城区,红桥区]
县 :Zone [zoneid=120111, parentzone=1201, zonename=西青区, spell=X, fullname=天津市,天津城区,西青区]
县 :Zone [zoneid=120104, parentzone=1201, zonename=南开区, spell=N, fullname=天津市,天津城区,南开区]
把输出语句改为添加数据库就ok完成了!