Gson解析Json数据(一)单类型格式
来源:互联网 发布:pdf转ppt软件在线 编辑:程序博客网 时间:2024/06/07 07:01
Gson解析Json数据(一)单类型格式
添加Gson开源库的依赖
- 点击 File -> Project Structure(快捷键 Ctrl + Alt + Shift + s),点击Project Structure界面左侧的modules。(在这里我的module是my_test)
- 在 “Dependencies” 标签界面下,点击右边绿色的 “+”号,选择第一个选项“libs or directories…”,输入关键字”gson”,enter搜索
无嵌套Json数据读写
单对象无嵌套Json数据解析
若有以下这个类:
public class Obj { private int x; private int y; Obj(int x, int y) { this.x = x; this.y = y; } @Override public String toString() { return "Obj{" + "x='" + x + ", y=" + y + '}'; } }
对于数据String jsonFromServer2=”{‘x’:20, ‘y’:10}”;
则可如下解析:
String jsonData="{'x':20, 'y':10}"; Gson gson = new Gson(); Obj obj = gson.fromJson(jsonData, Obj.class); //将jsonData数据以Obj对象进行解析 System.out.println(obj);
多对象无嵌套Json数据解析
还是以上面的Obj类为例,对于多对象,有很多种类型,这里采用LinkeList类型为例进行说明:
对于该LinkedList数据:
List<Obj> objList = new LinkedList<>(); for(int i = 0; i < 10; ++i) { objList.add(new Obj(i, 2*i)); }
以下进行解析:
Gson gson = new Gson();String jsonData = gson.toJson(objList);Type listType = new TypeToken<LinkedList<Obj>>(){}.getType(); //获得该对象类型LinkedList<Obj> objs = gson.fromJson(jsonData, listType); //将Json数据读取到LinkedList中
遍历获得的List:
for(Obj o : objs) { System.out.println(o); }
嵌套Json数据读写
规则的类成员
有时候,一个类A中会有类B的成员,如下面:
static class Obj { private int x; private int y; private interObj interObj; Obj(int x, int y, interObj interObj) { this.x = x; this.y = y; this.interObj = interObj; } 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 + '}'; } } interObj getInterObj() { return interObj; } @Override public String toString() { return "Obj{" + "x='" + x + ", y=" + y + '}'; }}
生成的数据如下格式:
[{“x”:0,”y”:0,”interObj”:{“a”:1,”b”:2}},{“x”:1,”y”:2,”interObj”:{“a”:2,”b”:3}},{“x”:2,”y”:4,”interObj”:{“a”:3,”b”:4}},{“x”:3,”y”:6,”interObj”:{“a”:4,”b”:5}},{“x”:4,”y”:8,”interObj”:{“a”:5,”b”:6}},{“x”:5,”y”:10,”interObj”:{“a”:6,”b”:7}},{“x”:6,”y”:12,”interObj”:{“a”:7,”b”:8}},{“x”:7,”y”:14,”interObj”:{“a”:8,”b”:9}},{“x”:8,”y”:16,”interObj”:{“a”:9,”b”:10}},{“x”:9,”y”:18,”interObj”:{“a”:10,”b”:11}}]
对于此种多对象嵌套型Json数据,可以对比多对象非嵌套型进行解析,代码如下:
首先,生成Json数据:
List<Obj> objList = new LinkedList<>(); for(int i = 0; i < 10; ++i) { objList.add(new Obj(i, 2*i, new Obj.interObj(i + 1, i + 2))); }
获取数据进行解析:
Gson gson = new Gson(); String jsonData = gson.toJson(objList); System.out.println(jsonData); Type listType = new TypeToken<LinkedList<Obj>>(){}.getType(); LinkedList<Obj> objs = gson.fromJson(jsonData, listType); for(Obj o : objs) { System.out.println(o.getInterObj()); }
链表类成员
这种情况下,每个对象生成的Json数据长度不一致,如下:
[{“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}]}]
但是,解析方法仍然与上述方法一致。
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; } @Override public String toString() { return "Obj{" + "x='" + x + ", y=" + y + '}'; } }
则如下解析:
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)); } Gson gson = new Gson(); String jsonData = gson.toJson(objList); System.out.println(jsonData); Type listType = new TypeToken<LinkedList<Obj>>(){}.getType(); LinkedList<Obj> objs = gson.fromJson(jsonData, listType); for(Obj o : objs) { LinkedList<Obj.interObj> interObjs = o.getInterObjList(); for(Obj.interObj interObj : interObjs) { System.out.println(interObj); } }
- Gson解析Json数据(一)单类型格式
- Gson解析JSON格式数据
- GSON解析Json格式数据
- Java-json系列(一):用GSON解析Json格式数据
- Java-json系列(一):用GSON解析Json格式数据
- Java-json系列(一):用GSON解析Json格式数据
- Java-json系列(一):用GSON解析Json格式数据
- Android连接服务器数据库查询+Gson解析(List和Map)格式json数据(一)
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析嵌套JSON格式数据
- Gson解析Map格式json数据
- 用GSON解析Json格式数据
- 浅谈扩欧及exgcd对二元不定方程求解问题
- Oracle PL/SQL开发基础(第三十弹:预定义异常)
- 饭卡 (背包问题 动态规划)
- 二进制文件格式设计
- python中的集合set
- Gson解析Json数据(一)单类型格式
- (转)为Java说句公道话
- 集合框架(并发修改异常的产生原因及其解决方案)
- 花生壳内网穿透-ssh远程
- 对象实例化过程分析
- 洛谷P1547 Out of Hay
- allocation类(空间配置类)
- python中字符串与字节转换
- The Process Of PCI