Androdi使用GSON解析嵌套JSON

来源:互联网 发布:java.exe自动关闭 编辑:程序博客网 时间:2024/05/21 00:55

原来一直都是使用Android自带的JsonArray JsonObject来解析Json数据

今天发现使用Gson来解析很省事,下面是一个简单的例子

创建一个Person类和Email类分别如下

Person.java

public class Person {private String name;private int age;private Email email;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Email getEmail() {return email;}public void setEmail(Email email) {this.email = email;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", email=" + email+ "]";}/** * @param name * @param age * @param email */public Person(String name, int age, Email email) {super();this.name = name;this.age = age;this.email = email;}}
Email.java

public class Email {private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}/** * @param address */public Email(String address) {super();this.address = address;}@Overridepublic String toString() {return "Email [address=" + address + "]";}}

在Activity里面先生成一个Json数据

public void onGetJsonClick(View v) {List<Person> persons = new ArrayList<Person>();for (int i = 0; i < 5; i++) {Person p = new Person("test" + i, i+20, new Email("test@gmail.com"));persons.add(p);}Gson gson = new Gson();jsonString = gson.toJson(persons);Log.i("GsonActivity", jsonString);tvshow.setText(jsonString);}

jsonString 就是我们生成的json数据,下面既可以解析这个数据啦

public void onParseJsonClick(View v) {if (!TextUtils.isEmpty(jsonString)) {Gson gson = new Gson();List<Person> persons = gson.fromJson(jsonString, new TypeToken<List<Person>>(){}.getType());int totalAge = 0;String totalEmail = "";for (Person p : persons) {totalAge += p.getAge();totalEmail += p.getEmail().getAddress();}tvshow.setText(String.valueOf(totalAge) + "    " + totalEmail);}}

可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换,再在数据集合里面去除Email对象(
 p.getEmail().getAddress();
)。

原创粉丝点击