java版省市区json数据递归转换转sql语句,省市区联动

 json格式文件

[
	{
		"id": "11",
		"pid": 0,
		"deep": 0,
		"name": "北京",
		"pinyin": "bei jing",
		"pinyin_prefix": "b",
		"ext_id": "110000000000",
		"ext_name": "北京市",
		"childs": [
			{
				"id": "1101",
				"pid": 11,
				"deep": 1,
				"name": "北京",
				"pinyin": "bei jing",
				"pinyin_prefix": "b",
				"ext_id": "110100000000",
				"ext_name": "北京市",
				"childs": [
					{
						"id": "110101",
						"pid": 1101,
						"deep": 2,
						"name": "东城",
						"pinyin": "dong cheng",
						"pinyin_prefix": "d",
						"ext_id": "110101000000",
						"ext_name": "东城区"
					},
					{
						"id": "110102",
						"pid": 1101,
						"deep": 2,
						"name": "西城",
						"pinyin": "xi cheng",
						"pinyin_prefix": "x",
						"ext_id": "110102000000",
						"ext_name": "西城区"
					},
					{
						"id": "110105",
						"pid": 1101,
						"deep": 2,
						"name": "朝阳",
						"pinyin": "chao yang",
						"pinyin_prefix": "c",
						"ext_id": "110105000000",
						"ext_name": "朝阳区"
					}
                    ...
                ]
                ...
            }
            ...
        ]
        ...
    }
    ...
]

 转换代码

public static void main(String[] args) throws FileNotFoundException {
    String path = "E:\\Desktop\\area_format_user.json";
    jsonToSql(path);
}

private static void jsonToSql(String path) throws FileNotFoundException {
    JsonParser jsonParser = new JsonParser();
    JsonArray jsonArray = (JsonArray) jsonParser.parse(new FileReader(path));
    List<String> sqlList = new ArrayList<>();
    getSql(jsonArray, sqlList);
    //保存文件中。。。
    System.out.println(sqlList.size());
}

private static void getSql(JsonArray jsonArray, List<String> sqlList){
    for (JsonElement element : jsonArray) {
        StringBuilder sb = new StringBuilder();
        sb.append("insert into shop_region (id, parent_id, level, nick_name, ext_name, area_code,pinyin,pinyin_prefix ) values ( ");
        JsonObject jsonObject = element.getAsJsonObject();
        sb.append(jsonObject.get("id").toString()).append(",");
        sb.append(jsonObject.get("pid").toString()).append(",");
        sb.append(jsonObject.get("deep").toString()).append(",");
        sb.append(jsonObject.get("name").toString()).append(",");
        sb.append(jsonObject.get("ext_name").toString()).append(",");
        sb.append(jsonObject.get("ext_id").toString()).append(",");
        sb.append(jsonObject.get("pinyin").toString()).append(",");
        sb.append(jsonObject.get("pinyin_prefix").toString()).append(");");
        sqlList.add(sb.toString());
        System.out.println(sb.toString());
        JsonArray childs = jsonObject.getAsJsonArray("childs");
        if (childs != null && childs.size() > 0) {
            getSql(childs, sqlList);
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Java递归示例来遍历省市区: ``` import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ProvinceCityArea { private Map<String, List<String>> cityMap = new HashMap<String, List<String>>(); private Map<String, List<String>> areaMap = new HashMap<String, List<String>>(); public ProvinceCityArea() { initCityMap(); initAreaMap(); } // 初始化城市数据 private void initCityMap() { List<String> beijing = new ArrayList<String>(); beijing.add("北京市"); cityMap.put("北京市", beijing); List<String> tianjin = new ArrayList<String>(); tianjin.add("天津市"); cityMap.put("天津市", tianjin); List<String> shanghai = new ArrayList<String>(); shanghai.add("上海市"); cityMap.put("上海市", shanghai); // 其他省市略去,可以自己添加数据 } // 初始化地区数据 private void initAreaMap() { List<String> dongcheng = new ArrayList<String>(); dongcheng.add("东城区"); dongcheng.add("西城区"); dongcheng.add("崇文区"); dongcheng.add("宣武区"); areaMap.put("北京市", dongcheng); List<String> heping = new ArrayList<String>(); heping.add("和平区"); heping.add("河东区"); heping.add("河西区"); heping.add("南开区"); heping.add("河北区"); areaMap.put("天津市", heping); List<String> huangpu = new ArrayList<String>(); huangpu.add("黄浦区"); huangpu.add("卢湾区"); huangpu.add("徐汇区"); huangpu.add("长宁区"); huangpu.add("静安区"); areaMap.put("上海市", huangpu); // 其他省市区数据略去,可以自己添加数据 } // 获取省市区数据 public List<String> getProvinceCityArea(String province, String city, String area) { List<String> result = new ArrayList<String>(); // 如果省份为空,则返回所有省份 if (province == null || "".equals(province)) { result.addAll(cityMap.keySet()); } else { // 如果城市为空,则返回该省下的所有城市 if (city == null || "".equals(city)) { result.addAll(cityMap.get(province)); } else { // 如果地区为空,则返回该城市下的所有地区 if (area == null || "".equals(area)) { result.addAll(areaMap.get(city)); } else { // 如果都不为空,则返回具体的地区名称 result.add(area); } } } return result; } public static void main(String[] args) { ProvinceCityArea pca = new ProvinceCityArea(); List<String> result = pca.getProvinceCityArea("北京市", "北京市", null); for (String str : result) { System.out.println(str); } } } ``` 在上面的示例中,我们首先通过 `initCityMap()` 和 `initAreaMap()` 方法初始化了城市和地区的数据。然后,我们通过 `getProvinceCityArea()` 方法来获取省市区数据。如果省份为空,则返回所有省份;如果城市为空,则返回该省下的所有城市;如果地区为空,则返回该城市下的所有地区;如果都不为空,则返回具体的地区名称。 在 `main()` 方法中,我们调用 `getProvinceCityArea()` 方法并传递省、市和区的名称来获取具体的数据

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值