美文网首页
Gson常用注解的使用示例

Gson常用注解的使用示例

作者: _青_9609 | 来源:发表于2023-05-22 18:25 被阅读0次

GsonGoogle提供的一个Java库,用于将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。它可以通过注解来定制序列化和反序列化过程,以满足特定的需求。

@SerializedName

该注解用于指定JSON字段的名称。
默认情况下,Gson将使用Java对象属性名作为JSON字段名,如果Java对象的属性名称和JSON字段的名称不同,可以使用该注解来指定JSON字段名称。

import com.google.gson.annotations.SerializedName

class User {
    @SerializedName(value = "name", alternate = ["user_name", "userName"])
    var name: String = ""

    @SerializedName("userAge")
    var age: Int = 0
}

在这个例子中,我们通过注解将User对象中name属性与JSON中的"name","user_name","userName"字段建立了映射关系。

  • 在反序列化的过程中,上述三个JSON字段都会转换为对象中的name属性。
  • 反序列化的时候如果出现多个字段映射为同一个属性,数据中后出现的字段会覆盖前面出现的字段,可以理解为按顺序解析后被覆盖了。
  • 序列化的时候name属性会转换为JSON中的name字段,以注解中value对应的值为准。

@Expose

该注解用于控制对象属性的序列化和反序列化。
默认情况下,所有的属性都会被序列化和反序列化。但是,如果我们希望对某些属性进行控制,可以使用该注解来指定。

import com.google.gson.annotations.Expose

class User {
    @Expose
    var name: String = ""

    @Expose(serialize = true, deserialize = true)
    var age1: Int = 0

    @Expose(serialize = false)
    var age2: Int = 0

    @Expose(deserialize = false)
    var age3: Int = 0

    @Expose(serialize = false, deserialize = false)
    var age4: Int = 0

    var age5: Int = 0
}

在这个例子中,我使用了不同的参数的组合来为属性添加@Expose注解。

  • @Expose 包含两个属性:serialize、deserialize,这两个属性的默认值均为 true。
  • serialize 用于确定该属性是否可序列化。当 serialize 值为 false 时,序列化过程会忽略该属性。
  • deserialize 用于确定该属性是否可反序列化。当 deserialize 值为 false 时,反序列化过程会忽略该属性。
  • @Expose相当于@Expose(serialize = true, deserialize = true),即可序列化也可反序列化。
  • 没有@Expose注解的属性不会被序列化或反序列化,就像是@Expose(serialize = false, deserialize = false)一样。

要让@Expose能够正常发挥作用还需要配合Gson的设置

import com.google.gson.Gson
import com.google.gson.GsonBuilder

class Example {
    fun test() {
        val data = User()
        val gson: Gson = GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()
        val json: String = gson.toJson(data)
        // {"age1":0,"age3":0,"name":""}
    }
}
  • 在进行序列化和反序列化时所使用的Gson对象需要用excludeFieldsWithoutExposeAnnotation()方法进行设置。
  • 普通的Gson对象会忽略@Expose注解

相关文章

  • Gson之@Expose

    Gson注解之 @Expose 的作用: 控制某个属性是否参与 JSON的序列化 or 反序列化。 代码使用示例:...

  • gson的使用细节

    关于json,gson是最常用到的一个库。平常使用时我通常使用Gson gson = new Gson();的方式...

  • GSON

    需要掌握的知识点 GSON的基本用法 属性重命名 @SerializedName 注解的使用 GSON使用泛型 利...

  • ★36.Gson

    简介 GitHub地址:Gson API文档:Gson API 基本类型示例 对象示例 代码 一些细节 最好使用p...

  • Gson的使用--使用注解

    Gson为了简化序列化和反序列化的过程,提供了很多注解,这些注解大致分为三类,我们一一的介绍一下。 自定义字段的名...

  • springboot-Controller

    Controller 示例: HelloController application.yml 常用注解 @Rest...

  • Android GreenDao的使用

    目录一、简介二、环境搭建三、使用准备四、简单使用示例五、二次封装(重点)六、GreenDao的常用注解 一、简介 ...

  • spring boot在关闭程序得时候释放资源

    使用注解@Prepestroy示例: 运行结果图:

  • 注解及Gson的使用

    1.注解插件ButterKnife Zelezny的使用与安装 1.1.下载安装 Settings——>Plugi...

  • JSON与JAVA对象互转

    常用的方案 Jackson Gson (Google) Fastjson (阿里) 本文使用 Fastj...

网友评论

      本文标题:Gson常用注解的使用示例

      本文链接:https://www.haomeiwen.com/subject/enorddtx.html