Gson之实例五-实际开发中的特殊需求处理

前面四篇博客基本上可以满足我们处理的绝大多数需求,但有时项目中对json有特殊的格式规定.比如下面的json串解析:

[{"tableName":"students","tableData":[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 9:54:49 PM"},{"id":2,"name":"曹贵生","birthDay":"Jun 22, 2012 9:54:49 PM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 9:54:49 PM"}]},{"tableName":"teachers","tableData":[{"id":1,"name":"米老师","title":"教授"},{"id":2,"name":"丁老师","title":"讲师"}]}]



分析之后我们发现使用前面博客中用到的都不好处理上面的json串.请看本文是如何处理的吧:

实体类:

import java.util.Date;
public class Student {
 private int id;
 private String name;
 private Date birthDay;
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public Date getBirthDay() {
 return birthDay;
 }
 public void setBirthDay(Date birthDay) {
 this.birthDay = birthDay;
 }
 @Override
 public String toString() {
 return "Student [birthDay=" + birthDay + ", id=" + id + ", name="
 + name + "]";
 }
}
public class Teacher {
 private int id;
 private String name;
 private String title;
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getTitle() {
 return title;
 }
 public void setTitle(String title) {
 this.title = title;
 }
 @Override
 public String toString() {
 return "Teacher [id=" + id + ", name=" + name + ", title=" + title
 + "]";
 }
}

注意这里定义了一个TableData实体类:

import java.util.List;
public class TableData {
 private String tableName;
 private List tableData;
 public String getTableName() {
 return tableName;
 }
 public void setTableName(String tableName) {
 this.tableName = tableName;
 }
 public List getTableData() {
 return tableData;
 }
 public void setTableData(List tableData) {
 this.tableData = tableData;
 }
}
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GsonTest5 {/*** @param args*/public static void main(String[] args) {
    // 对象转为Json-->start
    Student student1 = new Student();
    student1.setId(1);
    student1.setName("李坤");
    student1.setBirthDay(new Date());
    
    Student student2 = new Student();
    student2.setId(2);
    student2.setName("曹贵生");
    student2.setBirthDay(new Date());
    
    Student student3 = new Student();
    student3.setId(3);
    student3.setName("柳波");
    student3.setBirthDay(new Date());
    
    List<Student> stulist = new ArrayList<Student>();
    stulist.add(student1);
    stulist.add(student2);
    stulist.add(student3);
    
    Teacher teacher1 = new Teacher();
    teacher1.setId(1);
    teacher1.setName("米老师");
    teacher1.setTitle("教授");
    
    Teacher teacher2 = new Teacher();
    teacher2.setId(2);
    teacher2.setName("丁老师");
    teacher2.setTitle("讲师");
    
    List<Teacher> teacherList = new ArrayList<Teacher>();
    teacherList.add(teacher1);
    teacherList.add(teacher2);
    
    TableData td1 = new TableData();
    td1.setTableName("students");
    td1.setTableData(stulist);
    TableData td2 = new TableData();
    td2.setTableName("teachers");
    td2.setTableData(teacherList);
    List<TableData> tdList = new ArrayList<TableData>();
    tdList.add(td1);
    tdList.add(td2);
    Gson gson = new Gson();
    String s = gson.toJson(tdList);
    System.out.println(s);
    // 结果:[{"tableName":"students","tableData":[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 10:44:16 AM"},{"id":2,"name":"曹贵生","birthDay":"Jun 22, 2012 10:44:16 AM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 10:44:16 AM"}]},{"tableName":"teachers","tableData":[{"id":1,"name":"米老师","title":"教授"},{"id":2,"name":"丁老师","title":"讲师"}]}]
    // 对象转为Json-->end//
 /
    // 将json转为数据-->start    List<TableData> tableDatas2 = gson.fromJson(s,new TypeToken<List<TableData>>() {}.getType());
    for (int i = 0; i < tableDatas2.size(); i++) {
        TableData entityData = tableDatas2.get(i);
        String tableName = entityData.getTableName();
        List tableData = entityData.getTableData();
        String s2 = gson.toJson(tableData);
        // System.out.println(s2);
        // System.out.println(entityData.getData());
        
            if (tableName.equals("students")) {
                System.out.println("students");
                List<Student> retStuList = gson.fromJson(s2,new TypeToken<List<Student>>() {
            }.getType());
        
             for (int j = 0; j < retStuList.size(); j++) {
                System.out.println(retStuList.get(j));
                }
            }else if (tableName.equals("teachers")) {
            System.out.println("teachers");        
            List<Teacher> retTchrList = gson.fromJson(s2,new TypeToken<List<Teacher>>() {}.getType());
        
            for (int j = 0; j < retTchrList.size(); j++) {
                System.out.println(retTchrList.get(j));
            }    
        }
    }
    // Json转为对象-->end
    }
}

输出结果:

[{"tableName":"students","tableData":[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 10:04:12 PM"},{"id":2,"name":"曹贵生","birthDay":"Jun 22, 2012 10:04:12 PM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 10:04:12 PM"}]},{"tableName":"teachers","tableData":[{"id":1,"name":"米老师","title":"教授"},{"id":2,"name":"丁老师","title":"讲师"}]}]studentsStudent [birthDay=Fri Jun 22 22:04:12 CST 2012, id=1, name=李坤]Student [birthDay=Fri Jun 22 22:04:12 CST 2012, id=2, name=曹贵生]Student [birthDay=Fri Jun 22 22:04:12 CST 2012, id=3, name=柳波]teachersTeacher [id=1, name=米老师, title=教授]Teacher [id=2, name=丁老师, title=讲师]


转载于:https://my.oschina.net/mbreath/blog/522364

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值