哈哈哈123457 2017-06-06 13:37 采纳率: 87.2%
浏览 3096
已采纳

把硬盘里面的中国省市区的json文件解析出来并存入到mysql数据库中的对应省市区三张表里面

java 如何把硬盘里面的中国省市区的json文件,解析出来,并存入到mysql数据库中的对应省市区三张表里面,希望哪位大神可以代码实现一下,给我看看,网上复制的地址就算了,看不明白(要包括电脑文件读取写法,和数据库的存储)

数据来源:http://blog.sina.com.cn/s/blog_95153c710102viow.html

图片说明

  • 写回答

2条回答 默认 最新

  • 冷咖啡15 2017-06-06 15:52
    关注

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;

    import org.json.JSONArray;
    import org.json.JSONObject;

    public class ChinaCity {

    /**
     * 读取文件内容
     * @param filePath 文件路径
     * @return 文件字符串信息
     */
    public static String readFile(String filePath) {
    
        File file = new File(filePath);
        if (!file.exists()) {
            System.out.println("文件不存在");
            return null;
        }
        //文件读取
        BufferedReader br = null;
        StringBuilder sb = null;
        try {
            br = new BufferedReader(new FileReader(file));
            sb = new StringBuilder();
            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null) {
                    br.close();
                }
    
            } catch (IOException e) {
                e.printStackTrace();
    
            }
        }
    
        return sb != null ? sb.toString() : null;
    }
    /**
     * 解析Json数据
     * @param strJson
     */
    public static List<City> parseJson(String strJson){
        List<City> cities = new ArrayList<City>();
        JSONArray jsonArray = new JSONArray(strJson);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject json = jsonArray.getJSONObject(i);
            String cityName = json.getString("name");
            cities.add(new City(cityName, parseJsonToCity(json.getJSONArray("city"))));
        }
        return cities;
    }
    
    /**
     * 解析城市
     * @param jsonArray
     * @return
     */
    public static List<City> parseJsonToCity(JSONArray jsonArray){
        List<City> nextCities = new ArrayList<City>();
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject json = jsonArray.getJSONObject(i);
            String cityName = json.getString("name");
            nextCities.add(new City(cityName,ParseJsonToArea(json.getJSONArray("area"))));
        }
        return nextCities;
    }
    /**
     * 解析地区
     * @param jsonArray
     * @return
     */
    public static List<City> ParseJsonToArea(JSONArray jsonArray){
        List<City> areas = new ArrayList<City>();
        for (int i = 0; i < jsonArray.length(); i++) {
            areas.add(new City(jsonArray.getString(i), null));
        }
        return areas;
    }
    
    public static void main(String[] args) {
        String filePath = "C:\\Users\\Liheng\\Desktop\\ChinaCity.txt";
        String json = readFile(filePath);
        List<City> cities = parseJson(json);
        for (City city : cities) {
            city.print();
        }
    }
    

    }

    这个是读取并解析出来的数据,存入数据库,应该不难,想想很容易就不上代码了。

    解析出来的部分结果:
    北京:
    北京:
    东城区
    西城区
    崇文区
    宣武区
    朝阳区
    丰台区
    石景山区
    海淀区
    门头沟区
    房山区
    通州区
    顺义区
    昌平区
    大兴区
    平谷区
    怀柔区
    密云县
    延庆县

    天津:
    天津:
    和平区
    河东区
    河西区
    南开区
    河北区
    红桥区
    塘沽区
    汉沽区
    大港区
    东丽区
    西青区
    津南区
    北辰区
    武清区
    宝坻区
    宁河县
    静海县
    蓟 县

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器