精华内容
下载资源
问答
  • 非常详细的json使用方法。包括对象和json之间的相互转换,集合和json之间的相互转换,自己按照节点解析。gson功能真的很强大。
  • Android GSON使用

    千次阅读 2019-10-27 20:22:51
    Android GSON使用 使用场景及作用:Gson 是用来解析和生成Json,在实际项目中广泛使用。注意定义定对像的属性值必须和json中的保持一致,不然会解析失败。当然这就要求后台命名规范。 集成 dependencies { ...

    Android GSON使用

    使用场景及作用:Gson 是用来解析和生成Json,在实际项目中广泛使用。注意定义定对像的属性值必须和json中的保持一致,不然会解析失败。当然这就要求后台命名规范。

    集成

    dependencies {
      implementation 'com.google.code.gson:gson:2.8.6'
    }
    

    一、对象转Json

    new Gson().toJson(obj)
    
    

    二、Json转对象

    new Gson().fromJson(String json, Class<T> classOfT)
    
    

    三、测试结果

    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    
    import com.google.gson.Gson;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author by t, Date on 2019-10-23.
     * note: Gson使用
     */
    public class MainActivity extends AppCompatActivity {
    
        private final String TAG = "MainActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Gson gson = new Gson();
    
            Person person = new Person();
            person.setName("张三");
            person.setAge(22);
    
            Log.d(TAG, "toJson:" + gson.toJson(person));
    
            String jsonStr = "{\"age\":22,\"name\":\"张三\"}";
    
            Log.d(TAG, "fromJson:" + new Gson().fromJson(jsonStr, Person.class).toString());
    
            //来个复杂点的
    
            CompanyInfo companyInfo = new CompanyInfo();
            companyInfo.setCompanyName("公司名字");
            companyInfo.setCompanyOwner("老板");
    
            List<Person> personList = new ArrayList<>();
            personList.add(new Person("张三", 22));
            personList.add(new Person("李四", 23));
            personList.add(new Person("王五", 24));
            companyInfo.setPersonList(personList);
    
            String toJson = gson.toJson(companyInfo);
    
            Log.d(TAG, "toJson:" + toJson);
    
            Log.d(TAG, "fromJson:" + gson.fromJson(toJson, CompanyInfo.class));
        }
    
    
        public class Person {
            private String name;
            private int age;
    
            public Person() {
            }
    
            public Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
    
            public void setAge(int age) {
                this.age = age;
            }
    
            @Override
            public String toString() {
                return "Person{" +
                        "name='" + name + '\'' +
                        ", age=" + age +
                        '}';
            }
        }
    
    
        public class CompanyInfo {
            private String companyName;
            private String companyOwner;
            private List<Person> personList;
    
            public String getCompanyName() {
                return companyName;
            }
    
            public void setCompanyName(String companyName) {
                this.companyName = companyName;
            }
    
            public String getCompanyOwner() {
                return companyOwner;
            }
    
            public void setCompanyOwner(String companyOwner) {
                this.companyOwner = companyOwner;
            }
    
            public List<Person> getPersonList() {
                return personList;
            }
    
            public void setPersonList(List<Person> personList) {
                this.personList = personList;
            }
    
            @Override
            public String toString() {
                return "CompanyInfo{" +
                        "companyName='" + companyName + '\'' +
                        ", companyOwner='" + companyOwner + '\'' +
                        ", personList=" + personList +
                        '}';
            }
        }
    
    }
    

    Gson处理空对象场景

    
    //        UserInfo userInfo = new UserInfo();
    //        userInfo.setId(0);
    //        userInfo.setName("张三");
    //        userInfo.setAddress(null);
    
    //        {"id":0,"name":"张三"}
    
    
    //        UserInfo userInfo = new UserInfo();
    //        userInfo.setId(0);
    //        userInfo.setName("张三");
    //
    //        {"id":0,"name":"张三"}
    
    //        UserInfo userInfo = new UserInfo();
    //        userInfo.setId(0);
    //        userInfo.setName("张三");
    //        userInfo.setAddress("");
    //        
    //        {"address":"","id":0,"name":"张三"}
    
    
    
            UserInfo userInfo = new UserInfo();
            userInfo.setId(1);
            userInfo.setName("张三");
            userInfo.setAddress("地址");
            userInfo.setObject(new StudentInfo(2));
    
    //        {"address":"地址","data":{"studentId":2},"id":1,"name":"张三"}
    
    
    
    展开全文
  • Gson使用

    千次阅读 2018-07-06 13:40:35
    解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等. 这里简单介绍下Google开源的Gson。 Maven依赖: &amp;amp;amp;amp;amp;lt;!-- ...

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

    Maven依赖:

    <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
    </dependency>

    gradle依赖:

    // https://mvnrepository.com/artifact/com.google.code.gson/gson
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'

    Gson简单使用

    json有两个基础方法
    - toJson() 将对象转化为json字符串
    - fromJson() 将json字符串转化为特定类型

    // 使用new方法
    Gson gson = new Gson();
    
    // toJson 将bean对象转换为json字符串
    String jsonStr = gson.toJson(user, User.class);
    
    // 序列化List
    String jsonStr2 = gson.toJson(list);
    
    // fromJson 将json字符串转为bean对象
    Student user= gson.fromJson(jsonStr, User.class);
    
    // 反序列化成List时需要使用到TypeToken getType()
    List<User> retList = gson.fromJson(jsonStr2,new TypeToken<List<User>>(){}.getType());
    
    // 反序列化Hashmap
    HashMap<String, Object> map = gson.fromJson(jsonStr,new TypeToken<HashMap<String, Object>>(){}.getType());
    
    

    GsonBuilder

    • excludeFieldsWithoutExposeAnnotation() //不导出实体中没有用@Expose注解的属性
    • enableComplexMapKeySerialization() //支持Map的key为复杂对象的形式
    • serializeNulls() // 系列化结果包含空字段
    • setDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”)//时间转化为特定格式
    • setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//会把字段首字母大写,注:对于实体上使用了@SerializedName注解的不会生效
    • setPrettyPrinting() //对json结果格式化
    • setVersion(1.0) //有的字段不是一开始就有的,会随着版本的升级添加进来,那么在进行序列化和返序列化的时候就会根据版本号来选择是否要序列化.
      //@Since(版本号)能完美地实现这个功能.还的字段可能,随着版本的升级而删除,那么
      //@Until(版本号)也能实现这个功能,GsonBuilder.setVersion(double)方法需要调用.

    Gson注解

    //Expose注解用来指定字段需不需要序列化,serialize为false代表不序列化, deserialize则代表反序列化
    //默认情况下@Expose注解是不起作用的,需要用GsonBuilder创建Gson的时候调用了GsonBuilder.excludeFieldsWithoutExposeAnnotation()方法:
    @Expose(serialize = true, deserialize = false)
    
    //使用SerializedName注解自定义序列化字段名称,直接用Gson就可以,不用GsonBuilder生成对象
    @SerializedName("name")
    
    //使用Since注解表示哪些字段是哪个版本的,@Since(1.0)代表1.0版本,应用版本比它高或同等时会被序列化,反之不会,在GsonBuilder中使用setVersion(1.0)即可使用
    @Since(1.0) 或者 @Until(1.0)
    

    Gson简单工具类

    Gson实例是线程安全的,因此,可以在多个线程里重复使用Gson实例,从而降低开销。
    既然多线程共用同实例,那么编写gson工具类就是必要的。

    简单实现如下,仅包含反序列化和过滤或者不过滤非空字段功能。

    /**
     * description:
     * gson为线程安全的类,所以可以使用工具类来减少对象的实例化
     *
     * @author wkGui
     */
    public class GsonUtil {
        private static Gson filterNullGson;
        private static Gson nullableGson;
        static {
            nullableGson = new GsonBuilder()
                    .enableComplexMapKeySerialization()
                    .serializeNulls()
                    .setDateFormat("yyyy-MM-dd HH:mm:ss:SSS")
                    .create();
            filterNullGson = new GsonBuilder()
                    .enableComplexMapKeySerialization()
                    .setDateFormat("yyyy-MM-dd HH:mm:ss:SSS")
                    .create();
        }
    
        protected GsonUtil() {
        }
    
        /**
         * 根据对象返回json   不过滤空值字段
         */
        public static String toJsonWtihNullField(Object obj){
            return nullableGson.toJson(obj);
        }
    
        /**
         * 根据对象返回json  过滤空值字段
         */
        public static String toJsonFilterNullField(Object obj){
            return filterNullGson.toJson(obj);
        }
    
        /**
         * 将json转化为对应的实体对象
         * new TypeToken<HashMap<String, Object>>(){}.getType()
         */
        public static <T>  T fromJson(String json, Type type){
            return nullableGson.fromJson(json, type);
        }
    }
    
    展开全文
  • Android Gson使用

    千次阅读 2019-06-28 23:45:56
    1.基本使用 GSON库主要就是可以将一段JSON格式的字符串自动映射成一个对象或者一个集合,从而不需要我们再手动去编写代码进行解析了。 不过需要添加相关依赖implementation 'com.google.code.gson:gson:2.8.2' {...

    1.基本使用

    GSON库主要就是可以将一段JSON格式的字符串自动映射成一个对象或者一个集合,从而不需要我们再手动去编写代码进行解析了。

    不过需要添加相关依赖  implementation 'com.google.code.gson:gson:2.8.2'

    {"name":"Tom","age":20}

    定义一个 Person 类,并加入 name 和 age 两字段,然后只需调用如下代码就可以将 JSON 数据自动解析成一个 Person 对象:

    Gson gson = new Gson();
    Person person = gson.fromJson(jsonData,Person.class);

    若解析一段 JSON 数组会麻烦些,需要借助 TypeToken 把期望解析成的数据类型传入到 fromJson() 方法中:

    List<Person> people = gson.fromJson(jsonData,new TypeToken<List<Person>>(){}.getType());

    GSON 的基本用法就是这样。下面来解析上面的 JSON 文本,首先新增一个 Student 类:

    public class Student {
        
        private String id;
        private String name;
        private String sex;
     
        // Getter and Setter
        . . .
    }
        private void parseJSONWithGSON(String jsonData){
            Gson gson = new Gson();
            List<Student>studentList = gson.fromJson(jsonData,new TypeToken<List<Student>>(){}.getType());
        }

    2.@SerializedName注解

    使用Gson解析json成对象时默认的是将json里对应字段的值解析到java对象里对应字段的属性里面。

    但是经常会遇到我们自己定义的java对象里的属性名跟json里的字段名是不一样的,这时我们就可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来,JSON字段和Java字段之间建立映射关系。

    “basic”:{
              "city":"上海",
              "id":"CN0000001",
              "update":"2016-08-08 21:58"
              }

    正常使用Basic类:

    public class Basic {
          public String city;
          public String id;
          public String update;
    }  

    Basic类要这样写才能直接使用Gson直接解析出来,但是这样对属性命名显然不太友好。

    使用@SerializedName的Basic类:

    public class Basic {
          @SerializedName("city")
           public String cityName;
          @SerializedName("id")
           public String weatherId;
          @SerializedName("update")
           public String updateTime;
    }

    使用Gson解析的时候就会将city对应的值赋值到cityName属性上,同样的如果我们要将Basic生成json字符串使用Gson生成的时候也会将cityName的名字生成city,这样就解决了java对象里属性名跟json里字段名不匹配的情况了。

    展开全文
  • Gson使用入门

    2016-03-18 09:27:49
    一个例子快速掌握Gson的基本使用方法 an example showing how to use Gson to accelerate development 对应的博客地址:http://blog.csdn.net/leoleohan/article/details/50886707
  • Android Gson使用实例Demo

    2017-06-18 21:12:57
    使用Gson解析Json和Json数组,通俗易懂
  • 目录Android Studio导入Gson序列化Java对象反序列化JSON对象反序列化JSON数组反序列化List注解字段名并不一致限定某个字段不参加序列化或反序列化 ...使用方式如下: Android Studio导入Gson imple...

    在这里插入图片描述
    JSON数据结构特点及Java解析JSON的方法

    Gson概述

    Gson是谷歌官方推出的支持JSON和Java Oject相关转换的开源Java库。
    开源地址:https://github.com/google/gson
    

    使用方式

    Android Studio导入Gson

    implementation 'com.google.code.gson:gson:2.8.6'
    

    序列化Java对象

    首先创建一个User类并提供如下属性

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

    Gson序列化改对象方法

    User student = new User("lucas",30,"18888888888");
    Gson gson = new Gson();
    String string = gson.toJson(student);
    

    得到的结果如下:

    {
      "name": "lucas",
      "age": 30,
      "phone": "18888888888"
    }
    

    Gson解析JSON对象

    Gson解析JSON对象字符串

    {
      "name": "lucas",
      "age": 30,
      "phone": "18888888888"
    }
    
    Gson gson = new Gson();
    User bean = gson.fronJson(jsonData, User.class);
    

    Gson解析JSON数组

    反序列化的JSON数组如下

    [ "张三", "李四", "王五" ]
    
    Gson gson = new Gson();
    String[] strings = gson.fromJson(result, String[].class);
    

    Gson解析List

    [
      {
        "id": "001",
        "age": 30,
        "name": "张三",
        "isstudent": false
      },
      {
        "id": "002",
        "age": 25,
        "name": "李四",
        "isstudent": true
      },
      {
        "id": "003",
        "age": 26,
        "name": "王五",
        "isstudent": true
      }
    ]
    
    Gson gson = new Gson();
    Type userListType = new TypeToken<ArrayList<User>>(){}.getType();
    List<User> userList = gson.fromJson(result, userListType);
    

    Gson中的注解

    @SerializedName

    该注解是用来解决字段名并不一致

    @SerializedName("name")
    @SerializedName({"name1", "name2"})  // 可以有多个备选值
    public String name1;
    

    @Expose

    该注解是用来限定某个字段不参加序列化或反序列化

    @Expose(serialize=false,deserialize=false)
    private String name;
    

    Android Studio JSON插件

    GsonFormat

    虽然我们学会了用Gson解析JSON,但是写实体类是一件很枯燥、耗时的事情,我们需要对着api文档返回的数据一个一个的去建各种实体类。想摆脱这种烦恼的事情,我们可以用GsonFormat插件,帮我我们自动的把JSON转成实体类。
    安装方法如下:
    在这里插入图片描述
    使用方式和效果演示:

    • 新建实体类
    • 右键generate
    • GsonFormat
      在这里插入图片描述
      这样的话我们就不用再一个个的新建试题类了

    JsonOnlineViewer

    这是一个Android Studio中调试接口的神器
    在这里插入图片描述
    使用方法:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Android-Gson使用详解

    2017-10-08 00:20:28
    Gson解析默认使用方法很简单,将json转换成对象用Gson.fromJson(),将对象转化成json用Gson.toJson()即可。Gson解析解析数组和List也是用相同的方法。当解析List的时候,可能会遇到泛型操作。此时需要使用TypeToken...
  • Android studio 中Gson使用实例

    千次阅读 2018-07-05 16:02:56
    step1:在工程的build.gradle中添加依赖库step2:使用Gson...1) 数组转json 字符串Gson g = new Gson(); String jsonString = g.toJson(labelInfo.boundingBox);2) json字符串转数组Gson gson = new Gson(); int [] ...
  • Android Gson使用Demo

    2017-06-19 20:43:52
    android Gson使用实例 注释详细
  • Gson使用示例

    2017-08-10 17:35:27
    写了一个简单的Gson使用示例,作为参考
  • gson使用

    千次阅读 2016-09-08 18:34:42
     gson的方法可以分为两类:将对象转换为json,将json解析为对象。  toJson(Object,Appendable):将json串生成到指定的位置。第二个参数比较常见的如StringBuffer,StringBuilder以及Writer和它的子类。  toJson...
  • Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象。 Gson里最重要的对象有2个Gson 和 GsonBuilder Gson有2个最基本的方法 1) toJson() – 转换java 对象到JSON 2) from...
  • Gson使用简单教程

    千次阅读 2017-01-10 14:56:59
    Gson gson = new Gson(); gson.toJson(1); // 转换后的JSON为1 gson.toJson("abcd"); // 转换后的JSON为"abcd" gson.toJson(new Long(10)); //转换后的JSON为10 gson.toJson(new int[]{1, 2
  • idea gson使用

    千次阅读 2019-08-09 12:43:00
    alt+insert 选择gson 转载于:https://www.cnblogs.com/zfzf1/p/11326520.html
  • gson使用详解

    千次阅读 2015-05-27 10:41:10
    昨天读一篇文章,看到gson这个词,一开始还以为作者写错了,问了度娘之后才发现是我才疏学浅,于是大概了解了一下gson用法,总体来说还是很简单的。Gson.jar下载JavaBean转json //javaBean-->json @Test public ...
  • 详解Gson使用(三)使用注解

    万次阅读 2016-05-12 19:17:14
    项目地址: Github:https://github.com/smileysx/GsonTest Oschina:https://git.oschina.net/ysx_xx/GsonText 详解Gson使用(一)简单对象转化 ... 详解Gson使用(二)带泛型
  • NULL 博文链接:https://jilongliang.iteye.com/blog/1910882
  • Gson使用指南(一) 你真的会用Gson吗?Gson使用指南(二) 你真的会用Gson吗?Gson使用指南(三) 你真的会用Gson吗?Gson使用指南(四) 注:此系列基于Gson 2.4。本次的主要内容: 字段过滤的几种方法 基于@Expose...
  • 在Android/Java开发过程中,我们肯定会涉及到处理Josn,我个人比较常用的json处理第三方库是Gson,下面是开发过程中遇到的一些需求的解决方式,仅供参考。 Gson实体类转Json时(Gson反序列化实体类数据时),某些...
  • gson需要的jar包

    2019-01-18 14:46:28
    gson需要的四个jar包,gson-2.0、log4j-1.2.17、slf4j-api-1.7.10、slf4j-log4j12-1.7.10。导入这四个jar包后import com.google.gson.Gson;就不会报错了。
  • android-gson使用

    千次阅读 2016-07-14 20:53:40
    android gson使用
  • com.google.gson.Gson 使用详解

    万次阅读 2020-01-31 10:13:29
    import com.google.gson.Gson出错,标红 这个主要是缺少jar包,搜索这个jar包添加到Libs里面就可以了 下载地址:https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5 在Android Studio的Project...
  • SpringBoot中使用Gson处理JSON

    千次阅读 2020-02-16 13:21:50
    一、GSON简介 GSON是Google公司提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。 Gson特点如下: 快速、高效 代码量少、简洁 面向...
  • 详解Gson使用(四)Map对象转化

    千次阅读 2018-09-03 14:44:05
    项目地址: Github:https://github.com/smileysx/GsonTest Oschina:https://git.oschina.net/ysx_xx/GsonText 详解Gson使用(一)简单对象转化 ... 详解Gson使用(二)带泛型的List...
  • JSON (官网) 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等。
  • 详解Gson使用(一)简单对象转化

    万次阅读 2016-05-12 19:16:35
    详解Gson使用(二)带泛型的List转化 http://blog.csdn.net/a249900679/article/details/51386028 详解Gson使用(三)使用注解 http://blog.csdn.net/a249900679/article/details/51386509 详解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,852
精华内容 33,940
关键字:

gson使用