哈哈哈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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。