一、将Json类型字符串转换成对象。
假设字符串如下:
{"name":"中国","province":[{"name":"黑龙江","cities":{"city":["哈尔滨","大庆"]}},{"name":"广东","cities":{"city":["广州","深圳","珠海"]}},"name":"台湾","cities":{"city":["台北","高雄"]}},{"name":"新疆","cities":{"city":["乌鲁木齐"]}}]}
建立对象是关键。分析字符串的特点:最外面包括两个字段,name和province,name是字符串类型,province是个Province类型集合,可以建立一个country类。
Country类
public class Country {
private String name;
private ArrayList<Province> province;
public Country() {
}
public Country(String name, ArrayList<Province> province) {
super();
this.name = name;
this.province = province;
}
@Override
public String toString() {
return "Country [name=" + name + ", province=" + province + "]";
}
}
Province类里面包括两个字段,String的name和一个Cities类型对象。注意Cities不是集合。
Province类
public class Province {
private String name;
private Cities cities;
public Province(String name, Cities cities) {
super();
this.name = name;
this.cities = cities;
}
@Override
public String toString() {
return "Province [name=" + name + ", cities=" + cities + "]";
}
}
Cities类有一个集合city,类型是String
Cities类
public class Cities {
private ArrayList<String> city;
public Cities(ArrayList<String> city) {
super();
this.city = city;
}
@Override
public String toString() {
return "Cities [city=" + city + "]";
}
}
这样就建好了各个实体类。
//实例化一个Gson对象、
Gson gson = new Gson();
Country country = new Country();
// 将一个Json格式的字符串转换成对象
country = gson.fromJson(jsonString, Country.class);
txtView.setText(country.toString());
二、利用上面的对象,将对象转换成Json类型字符串。主要代码如下:
// 一个城市集合
ArrayList<String> cities = new ArrayList<String>();
// 一个省的集合
ArrayList<Province> provinces = new ArrayList<Province>();
// 加入一些纽约州的城市
cities.add("纽约市");
cities.add("水牛城");
cities.add("杨克斯");
// 创建纽约州
Province province = new Province("纽约州", new Cities(cities));
// 将纽约州加入到州集合
provinces.add(province);
cities = new ArrayList<String>();
cities.add("哥伦布");
cities.add("克里夫兰");
province = new Province("俄亥俄州", new Cities(cities));
provinces.add(province);
cities = new ArrayList<String>();
cities.add("奥林匹亚市");
cities.add("西雅图市");
province = new Province("华盛顿州", new Cities(cities));
provinces.add(province);
// 实例化一个国家
Country country1 = new Country("美国", provinces);
// 将一个对象转换成Json形式的字符串
String json = gson.toJson(country1);
txtView1.setText(json);