将省市区数据库转化为json格式数据

 数据库字段:

实体类

public class javaBean {

	public String code;
	 
	public String name;
 
	public String parent_code;
}

 主要代码:

package test;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;

import com.google.gson.Gson;

public class Sqltojson {
	public static void main(String[] args) {
		try {
			// 调用Class.forName()方法加载驱动程序
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("成功加载MySQL驱动!");
 
			String url = "jdbc:mysql://localhost:3306/fyb"; // JDBC的URL
			Connection conn;
 
			conn = DriverManager.getConnection(url, "root", "root");
			Statement stmt = conn.createStatement(); // 创建Statement对象
			System.out.println("成功连接到数据库!");
 
			String sql = "select * from base_province x union select * from base_city y union select * from base_country z "; // 要执行的SQL
			ResultSet rs = stmt.executeQuery(sql);// 创建数据对象
		
			 System.out.println("ID" + "\t\t" + "code" + "\t\t" + "name"
			 + "\t\t"+"parentcode" + "\t\t" + "deep" + "\t\t" );
			
//			 while (rs.next()) {
//			 System.out.print(rs.getString(1) + "\t\t");
//			 System.out.print(rs.getString(2) + "\t\t");
//			 System.out.print(rs.getString(3) + "\t\t");
//			 System.out.print(rs.getString(4) + "\t\t");
//			 System.out.print(rs.getInt(5) + "\t\t");
//			 System.out.println();
//			 }
            saveListData(rs);//分类存数据
            rs.close();
			stmt.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/*
	 * 存数据
	 */
	public static void saveListData(ResultSet rs) {
		try {
			ArrayList<javaBean> province = new ArrayList();
			ArrayList<javaBean> city = new ArrayList();
			ArrayList<javaBean> country = new ArrayList();
			while (rs.next()) {
				int area_deep = rs.getInt(5);//此处是spl数据中的地区深度(1,2,3-->省市区)
				
				if (area_deep == 1) {
					
					javaBean theatyBean = new javaBean();
					theatyBean.code = rs.getString(2);
					theatyBean.name = rs.getString(3);
					theatyBean.parent_code = rs.getString(4);
					province.add(theatyBean);
			
				} else if (area_deep == 2) {
					javaBean theatyBean = new javaBean();
					theatyBean.code = rs.getString(2);
					theatyBean.name = rs.getString(3);
					theatyBean.parent_code = rs.getString(4);
					city.add(theatyBean);
				} else if (area_deep == 3) {
					javaBean theatyBean = new javaBean();
					theatyBean.code = rs.getString(2);
					theatyBean.name = rs.getString(3);
					theatyBean.parent_code = rs.getString(4);
					country.add(theatyBean);
				}
 
			}
	
			RankBeanList(province, city, country);
			// Arrayprintln(beanlist01);
			// Arrayprintln(beanlist02);
			// Arrayprintln(beanlist03);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 通过三个级别数据,循环遍历
	 */
	private static void RankBeanList(ArrayList<javaBean> province,
			ArrayList<javaBean> city, ArrayList<javaBean> country) {
		
		LinkedList<LinkedHashMap<String, Object>> provinceList = new LinkedList<LinkedHashMap<String, Object>>();// 省集合
		for (int i = 0; i < province.size(); i++) {
			LinkedHashMap<String, Object> prMap = new LinkedHashMap<String, Object>();
			prMap.put("name", province.get(i).name);
			prMap.put("id", province.get(i).code);
			List<LinkedHashMap<String, Object>> citylist = new ArrayList<LinkedHashMap<String, Object>>();// 市集合
			for (int j = 0; j < city.size(); j++) {
 
				if (province.get(i).code.equals( city.get(j).parent_code)) {
					LinkedHashMap<String, Object> cityMap = new LinkedHashMap<String, Object>();
			       System.out.println("执行力吗");
					cityMap.put("name", city.get(j).name);
					cityMap.put("id", city.get(j).code);
					List<LinkedHashMap<String, Object>> arealist = new ArrayList<LinkedHashMap<String, Object>>();// 区名字集合
					//ArrayList<String> list_area_id = new ArrayList<String>();// 区编号集合
 
					for (int k = 0; k < country.size(); k++) {
						if (city.get(j).code.equals(country.get(k).parent_code)) {
							LinkedHashMap<String, Object> countryMap = new LinkedHashMap<String, Object>();
							countryMap.put("name", country.get(k).name);
							countryMap.put("id", country.get(k).code);
							arealist.add(countryMap);
						}
						
					}
					
					cityMap.put("area",arealist);
					citylist.add(cityMap);
							
				}
				prMap.put("city", citylist);// 省下面的市集合
			}
		
 
			provinceList.add(prMap);
			
		}

		mapPrintln(provinceList);// 输出
 
	}
	/**
	 * <P>
	 * 打印map集合和数据
	 * </p>
	 * 
	 * @param list
	 */
	private static void mapPrintln(List<LinkedHashMap<String, Object>> list) {
		// TODO Auto-generated method stub
		if (list == null && list.size() == 0) {
			return;
		}
		System.out.println(list.size()
				+ "---size--------------------------------------------------");
		// System.out.println(list.toString());
		Gson gson = new Gson();
		String jsonString = gson.toJson(list);
		inputFile(jsonString);// json文件
		System.out.println("输出list:"+list);// 打印
	}

/**
	 * 开启线程
	 * 
	 * @param jsonString
	 */
	private static void inputFile(final String jsonString) {
		// TODO Auto-generated method stub
		new Thread(new Runnable() {
 
			public void run() {
				// TODO Auto-generated method stub
				WriteConfigJson(jsonString);
			}
		}).start();
	}
 
	/**
	 * 输出json文件
	 * 
	 * @param args
	 */
	public static void WriteConfigJson(String args) {
		String src = "D:\\province.json";// 自定义文件路径
 
		File file = new File(src);
 
		if (!file.getParentFile().exists()) {
			file.getParentFile().mkdirs();
		}
		try {
			file.delete();
			file.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		try {
			FileWriter fw = new FileWriter(file, true);
			fw.write(args);
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
 
	}
}

结果(只展示部分):

[{name=北京市, id=110000, city=[{name=北京市, id=110100, area=[{name=东城区, id=110101}, {name=西城区, id=110102}, {name=朝阳区, id=110105}, {name=丰台区, id=110106}, {name=石景山区, id=110107}, {name=海淀区, id=110108}, {name=门头沟区, id=110109}, {name=房山区, id=110111}, {name=通州区, id=110112}, {name=顺义区, id=110113}, {name=昌平区, id=110114}, {name=大兴区, id=110115}, {name=怀柔区, id=110116}, {name=平谷区, id=110117}, {name=密云县, id=110228}, {name=延庆县, id=110229}]}]}, {name=天津市, id=120000, city=[{name=天津市, id=120100, area=[{name=和平区, id=120101}, {name=河东区, id=120102}, {name=河西区, id=120103}, {name=南开区, id=120104}, {name=河北区, id=120105}, {name=红桥区, id=120106}, {name=东丽区, id=120110}, {name=西青区, id=120111}, {name=津南区, id=120112}, {name=北辰区, id=120113}, {name=武清区, id=120114}, {name=宝坻区, id=1201

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值