qq_27836205
Jordan裔
采纳率71.8%
2017-06-06 13:37 阅读 2.9k
已采纳

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

5

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

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

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    u014167893 冷咖啡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 评论 复制链接分享
  • dcxy0 Q544471255 2017-06-06 14:41

    不就是解析个json?

    可以用gson或者jackson都可以实现,自己一步步实现不就可以了?

    如果不懂gson或者jackson可以去百度下。

    点赞 评论 复制链接分享

相关推荐