Gson在Java中的使用实例

心已赠人 2022-03-26 04:42 261阅读 0赞

Gson在Java中的使用

JSON ( 官网) 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等。

所需依赖包

jar包:gson-2.8.2.jar 下载
依赖包配置:

  1. <dependency>
  2. <groupId>com.google.code.gson</groupId>
  3. <artifactId>gson</artifactId>
  4. <version>2.2.8</version>
  5. </dependency>

一、Gson的基本用法

Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。

1.基本数据类型的生成和解析

(1)基本数据类型生成

  1. Gson gson = new Gson();
  2. String jsonNumber = gson.toJson(88);
  3. String jsonBoolean = gson.toJson(false);
  4. String jsonString = gson.toJson("String");

(2)基本数据类型的解析

  1. int number = new Gson().fromJson(jsonNumber, int.class); // 88
  2. boolean flag = new Gson().fromJson(jsonBoolean, boolean.class); // false
  3. String str = new Gson().fromJson(jsonString, String.class); // String

2.POJO类的生成与解析

  1. public class Student {
  2. public String name;
  3. public int age;
  4. public String class;
  5. public Student(String name, int age, String class) {
  6. this.name = name;
  7. this.age = age;
  8. this.class = class;
  9. }
  10. }

(1)生成

  1. Gson gson = new Gson();
  2. Student stu = new Student("张三",24,"中国");
  3. String jsonObject = gson.toJson(stu);

(2)解析

  1. Gson gson = new Gson();
  2. String jsonString = "{\"name\":\"张三\",\"age\":24,\"class\":\"中国\"}";
  3. Student stu = gson.fromJson(jsonString, Student.class);

二、Gson在Java中的具体实例

  1. Sting arr = "{'list':[{'fid':'1','name':'北京','hospitalld':'99999996'}, {'fid':'2','name':'深圳','hospitalld':'05786799'}]}";

1.利用gson把jsonList转化为一个list对象并将不需要的字段删除

  1. /** * 1.将字符串数据转成JSONObject对象,用getJSONArray获取arr中的list集合 * 2.创建新的 JSONArray 用户存放删除后的数据 * 3.删除key-foodList里不需要的key/value * 4.删除jsonArray里指定的key/value并将删除后的的新值赋给jsonArray1 * 5.利用Gsonde的TypeToken方法将转换好的list集合转换相对应额对象 */
  2. //将app返回的String arr解析;
  3. JSONArray jsonArray = JSONObject.fromObject(arr).getJSONArray("list");
  4. JSONArray jsonArray1 = new JSONArray();
  5. for(int i = 0; i < jsonArray.size(); i++){
  6. JSONObject jsonObject = (JSONObject) jsonArray.get(i);
  7. jsonArray1.add(jsonObject.discard("createdate"));//discard删除指定的字段
  8. }
  9. List<实体类对象> list = null;
  10. GSON gson = new Gson();
  11. if (jsonArray1!=null){
  12. list = gson.fromJson(String.valueOf(jsonArray1), new TypeToken<List<实体类对象>>(){ }.getType());
  13. }

2.利用gson把jsonList转化为一个list对象

  1. /** * 1.将字符串数据转成JSONObject对象,用getJSONArray获取arr中的list集合 * 2.利用Gsonde的TypeToken方法将转换好的list集合转换相对应额对象 */
  2. JSONArray jsonArray = JSONObject.fromObject(arr).getJSONArray("list");
  3. List<实体类对象> list = null;
  4. GSON gson1 = new Gson();
  5. if (jsonArray1!=null){
  6. list = gson1.fromJson(String.valueOf(jsonArray1), new TypeToken<List<实体类对象>>(){ }.getType());
  7. }

3.json转化为一个类对象

  1. JSONObject objects = JSONObject.fromObject(arr);
  2. 实体类对象 Customer = (实体类对象) JSONObject.toBean(objects.getJSONObject("Customer"), 实体类对象.class);

4.将 序列化后的字符串 转 成 map 对象

  1. // jsonStr 序列化后的字符串
  2. Gson gson2=new Gson();
  3. String jsonStr="{'1': {'fid': '1','name': '北京','hospitalld': '99999996'},'2': {'fid': '2','name': '深圳','hospitalld': '05786799'}}";
  4. Map<String, 实体类对象> citys = gson2.fromJson(jsonStr, new TypeToken<Map<String, 实体类对象>>() { }.getType());
  5. System.out.println(citys.get("1").getName()+"-------"+citys.get("2").getName());

发表评论

表情:
评论列表 (有 0 条评论,261人围观)

还没有评论,来说两句吧...

相关阅读