Gson解析Json数据(二)

来源:互联网 发布:中国数据分析行业协会 编辑:程序博客网 时间:2024/05/16 15:43

Gson对Json文件的读写

很多时候我们需要对Json文件进行读取,用来保存数据与对象的重新生成。
接上节内容,我将读取的是以下类的数据:

static class Obj {    private int x;    private int y;    private LinkedList<interObj> interObjList;    Obj(int x, int y, LinkedList<interObj> list) {        this.x = x;        this.y = y;        this.interObjList = list;    }    static class interObj {        private int a;        private int b;        public interObj(int a, int b) {            this.a = a;            this.b = b;        }        @Override        public String toString() {            return "interObj{" +                    "a='" + a +                    ", b=" + b +                    '}';        }    }    LinkedList<interObj> getInterObjList()    {        return interObjList;    }    void setX(int x) {        this.x = x;    }    void setY(int y) {        this.y = y;    }    int getX() {        return x;    }    int getY() {        return y;    }    @Override    public String toString() {        return "Obj{" +                "x='" + x +                ", y=" + y +                '}';    }}

生成json数据:

List<Obj> objList = new LinkedList<>();for(int i = 0; i < 10; ++i) {    LinkedList<Obj.interObj> list = new LinkedList<>();    for(int j = 0; j < i + 1; ++j) {        list.add(new Obj.interObj(j, j + 1));    }    objList.add(new Obj(i, 2*i, list));}

生成数据如下:

[{"x":0,"y":0,"interObjList":[{"a":0,"b":1}]},{"x":1,"y":2,"interObjList":[{"a":0,"b":1},{"a":1,"b":2}]},{"x":2,"y":4,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3}]},{"x":3,"y":6,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4}]},{"x":4,"y":8,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4},{"a":4,"b":5}]},{"x":5,"y":10,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4},{"a":4,"b":5},{"a":5,"b":6}]},{"x":6,"y":12,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4},{"a":4,"b":5},{"a":5,"b":6},{"a":6,"b":7}]},{"x":7,"y":14,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4},{"a":4,"b":5},{"a":5,"b":6},{"a":6,"b":7},{"a":7,"b":8}]},{"x":8,"y":16,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4},{"a":4,"b":5},{"a":5,"b":6},{"a":6,"b":7},{"a":7,"b":8},{"a":8,"b":9}]},{"x":9,"y":18,"interObjList":[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4},{"a":4,"b":5},{"a":5,"b":6},{"a":6,"b":7},{"a":7,"b":8},{"a":8,"b":9},{"a":9,"b":10}]}]

写入文件:

Gson gson = new Gson();String jsonData = gson.toJson(objList);try {    FileWriter writer = new FileWriter("/home/sar/Desktop/data.json");    writer.write(jsonData);    writer.flush();    writer.close();    System.out.println(jsonData);}catch (Exception ex) {    ex.printStackTrace();}

读取文件:

BufferedReader bufferedReader = new BufferedReader(new FileReader("/home/sar/Desktop/data.json"));Type listType = new TypeToken<LinkedList<Obj>>(){}.getType();LinkedList<Obj> objs = gson.fromJson(bufferedReader, listType);for(Obj o : objs) {    LinkedList<Obj.interObj> interObjs = o.getInterObjList();    for(Obj.interObj interObj : interObjs) {        System.out.println(interObj);    }}bufferedReader.close();

以下是读取结果:(即,将所有Obj中的interObjList打印出来)

interObj{a='0, b=1}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='3, b=4}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='3, b=4}interObj{a='4, b=5}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='3, b=4}interObj{a='4, b=5}interObj{a='5, b=6}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='3, b=4}interObj{a='4, b=5}interObj{a='5, b=6}interObj{a='6, b=7}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='3, b=4}interObj{a='4, b=5}interObj{a='5, b=6}interObj{a='6, b=7}interObj{a='7, b=8}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='3, b=4}interObj{a='4, b=5}interObj{a='5, b=6}interObj{a='6, b=7}interObj{a='7, b=8}interObj{a='8, b=9}interObj{a='0, b=1}interObj{a='1, b=2}interObj{a='2, b=3}interObj{a='3, b=4}interObj{a='4, b=5}interObj{a='5, b=6}interObj{a='6, b=7}interObj{a='7, b=8}interObj{a='8, b=9}interObj{a='9, b=10}
原创粉丝点击