zoukankan      html  css  js  c++  java
  • Gson在Java中的使用实例

    Gson在Java中的使用

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

    所需依赖包

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

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.8</version>
    </dependency>

    一、Gson的基本用法

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

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

    (1)基本数据类型生成

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

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

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

    2.POJO类的生成与解析

    public class Student {
        public String name;
        public int age;
        public String class;
        public Student(String name, int age, String class) {
            this.name = name;
            this.age = age;
            this.class = class;
        }
    }

    (1)生成

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

    (2)解析

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

    二、Gson在Java中的具体实例

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

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

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

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

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

    3.json转化为一个类对象

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

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

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

    另一篇文章:https://blog.csdn.net/chenrenxiang/article/details/80291224

    https://www.jianshu.com/p/75a50aa0cad1

    ref:https://blog.csdn.net/qq_34292479/article/details/86495412?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

  • 相关阅读:
    篮球中PRA意思
    篮球中PRA意思
    Ajax介绍
    QQ播放器代码
    QQ播放器代码
    QQ播放器代码
    DataSet对象
    DataReader对象
    Connection对象
    DataAdapter对象
  • 原文地址:https://www.cnblogs.com/yoyowin/p/13833639.html
Copyright © 2011-2022 走看看