已知省市县三个list(json或者实体对象),求综合后的json数据

1 篇文章 0 订阅

1.需求

已经知道省市县三个list(json或者对象尸体),将三个list的内容整合到一个json数据中;

2.解决方法:

  1. 分别建立三个实体对象,对应省市县,方便映射解析;
  2. 利用fastjson来处理和转换json数据

3.代码示例

City类

public class City {
    private int cityId;
    private String name;
    private int ProID;
    private int CitySort;
    public int getCityId() {
        return cityId;
    }
    public void setCityId(int cityId) {
        this.cityId = cityId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getProID() {
        return ProID;
    }
    public void setProID(int proID) {
        ProID = proID;
    }
    public int getCitySort() {
        return CitySort;
    }
    public void setCitySort(int citySort) {
        CitySort = citySort;
    }
}

Province类

public class Province {
    private int proID;
    private String name;
    private int ProSort;
    private String ProRemark;
    public int getProID() {
        return proID;
    }
    public void setProID(int proID) {
        this.proID = proID;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getProSort() {
        return ProSort;
    }
    public void setProSort(int proSort) {
        ProSort = proSort;
    }
    public String getProRemark() {
        return ProRemark;
    }
    public void setProRemark(String proRemark) {
        ProRemark = proRemark;
    }

}

Dict类

public class Dist {
    private int id;
    private String disName;
    private int cityID;
    private int disSort;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getDisName() {
        return disName;
    }
    public void setDisName(String disName) {
        this.disName = disName;
    }
    public int getCityID() {
        return cityID;
    }
    public void setCityID(int cityID) {
        this.cityID = cityID;
    }
    public int getDisSort() {
        return disSort;
    }
    public void setDisSort(int disSort) {
        this.disSort = disSort;
    }


}

TestJson

public class TestJson {
    static List<Province> proList = new ArrayList<>();
    static List<City> cityList = new ArrayList<>();
    static List<Dist> distList = new ArrayList<>();

    public static void main(String[] args) {

        Province province = new Province();
        province.setName("北京");
        province.setProID(1);
        province.setProRemark("直辖市");
        province.setProSort(1);

        Province province2 = new Province();
        province2.setName("天津");
        province2.setProID(2);
        province2.setProRemark("直辖市");
        province2.setProSort(2);

        proList.add(province);
        proList.add(province2);

        // 创建城市
        City city = new City();
        city.setCityId(1);
        city.setCitySort(1);
        city.setName("北京A市");
        city.setProID(1);

        City city2 = new City();
        city2.setCityId(2);
        city2.setCitySort(2);
        city2.setName("北京B市");
        city2.setProID(1);

        City city3 = new City();
        city3.setCityId(3);
        city3.setCitySort(1);
        city3.setName("天津A市");
        city3.setProID(2);

        City city4 = new City();
        city4.setCityId(4);
        city4.setCitySort(2);
        city4.setName("天津B市");
        city4.setProID(2);

        cityList.add(city);
        cityList.add(city2);
        cityList.add(city3);
        cityList.add(city4);

        // 添加县城
        Dist dist = new Dist();
        dist.setCityID(1);
        dist.setDisName("北京A市县城1");
        dist.setId(1);
        dist.setDisSort(1);

        Dist dist2 = new Dist();
        dist2.setCityID(1);
        dist2.setDisName("北京A市县城2");
        dist2.setId(2);
        dist2.setDisSort(2);

        Dist dist3 = new Dist();
        dist3.setCityID(2);
        dist3.setDisName("北京B市县城1");
        dist3.setId(3);
        dist3.setDisSort(3);

        Dist dist4 = new Dist();
        dist4.setCityID(2);
        dist4.setDisName("北京B市县城2");
        dist4.setId(4);
        dist4.setDisSort(4);

        Dist dist5 = new Dist();
        dist5.setCityID(3);
        dist5.setDisName("天津A市县城1");
        dist5.setId(5);
        dist5.setDisSort(5);

        Dist dist6 = new Dist();
        dist6.setCityID(4);
        dist6.setDisName("天津B市县城1");
        dist6.setId(6);
        dist6.setDisSort(6);

        Dist dist7 = new Dist();
        dist7.setCityID(4);
        dist7.setDisName("天津B市县城2");
        dist7.setId(7);
        dist7.setDisSort(7);

        Dist dist8 = new Dist();
        dist8.setCityID(4);
        dist8.setDisName("天津B市县城3");
        dist8.setId(8);
        dist8.setDisSort(8);

        distList.add(dist);
        distList.add(dist2);
        distList.add(dist3);
        distList.add(dist4);
        distList.add(dist5);
        distList.add(dist6);
        distList.add(dist7);
        distList.add(dist8);

        // list转换为jsonString
        String jsonString = JSON.toJSONString(proList);
        System.out.println(jsonString);

        // 假设原先只有 province的json数据
        List<Province> proList2 = JSON.parseArray(jsonString, Province.class);
        // 后面综合用
        List<Object> objects = new ArrayList<>();

        // 给每个省份添加城市
        for (int i = 0; i < proList2.size(); i++) {
            Province province3 = proList2.get(i);
            int proID = province3.getProID();

            // 根据省份id查询包含的城市
            List<City> cityList2 = findCityListByProId(proID);

            // 带县区的城市集合
            List<Object> Cityobjects = new ArrayList<>();
            // 遍历城市,添加县城
            for (int j = 0; j < cityList2.size(); j++) {
                City cityObj = cityList2.get(j);
                int cityId = cityObj.getCityId();
                // 根据cityId查询得到distList
                List<Dist> distList2 = findDistListByCityId(cityId);
                Map<String, Object> map2 = new HashMap<>();
                map2.put("proID", cityObj.getProID());
                map2.put("name", cityObj.getName());
                map2.put("citySort", cityObj.getCitySort());
                map2.put("cityID", cityObj.getCityId());
                map2.put("dist", distList2);

                // String jsonString4 = JSON.toJSONString(map2);
                // System.out.println(jsonString4);
                // 带县区的城市集合
                Cityobjects.add(map2);
            }
            String jsonString5 = JSON.toJSONString(Cityobjects);
            System.out.println("Cityobjects:" + jsonString5);

            // Object json = JSON.toJSON(Cityobjects);
            // String jsonString2 = JSON.toJSONString(Cityobjects);
            // System.out.println(jsonString2);

            Map<String, Object> map = new HashMap<>();
            map.put("proID", province3.getProID());
            map.put("name", province3.getName());
            map.put("ProSort", province3.getProSort());
            map.put("ProRemark", province3.getProRemark());
            // map.put("city", json);//可以放json
            map.put("city", Cityobjects);// 也可以直接放Cityobjects
            String jsonString3 = JSON.toJSONString(map);
            System.out.println(jsonString3);
            // 带城市的省份综合到一个集合
            objects.add(map);
        }
        String jsonString3 = JSON.toJSONString(objects);
        System.out.println("##最终json##" + jsonString3);
    }

    // 根据城市id查县城列表
    private static List<Dist> findDistListByCityId(int cityId) {
        List<Dist> distList2 = new ArrayList<>();
        for (int i = 0; i < distList.size(); i++) {
            if (distList.get(i).getCityID() == cityId) {
                distList2.add(distList.get(i));
            }
        }
        return distList2;
    }

    // 根据身份id查城市列表
    private static List<City> findCityListByProId(int proID) {
        List<City> cityList2 = new ArrayList<>();
        for (int i = 0; i < cityList.size(); i++) {
            if (cityList.get(i).getProID() == proID) {
                cityList2.add(cityList.get(i));
            }
        }
        return cityList2;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值