您的位置:首页 > Web前端 > JavaScript

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

2017-06-15 17:46 309 查看

1.需求

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

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
de8d
= 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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json