在Kotlin类和数据类实例中使用Gson库

2,042 阅读2分钟

Gson库是一个由谷歌开发的Java库,它允许你将Java对象序列化和反序列化为JSON表示。

该库也可以在Kotlin中使用,将Kotlinclassdata class 实例转换为其JSON表示。

首先,你需要将Gson库作为一个依赖项添加到你的项目中。如果你正在开发一个Android应用程序,你可以在你的app/build.gradle 文件中添加该依赖项:

dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
// ...
 implementation 'com.google.code.gson:gson:2.8.9'
}

或者如果你用Maven开发Kotlin应用,可以在你的pom.xml 文件中添加以下内容<dependencies> 标签:

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

一旦你为你的项目同步了依赖关系,Gson库应该就可以供你使用了。

用Gson将Kotlin类转换为JSON格式

要将一个Kotlinclass 实例转换为其JSON实例,你需要调用Gson().toJson() 方法,并将类实例作为其参数传递。

假设你有一个User 数据类,定义如下:

data class User(
val firstName: String,
val lastName: String
)

你可以创建一个User 数据类实例的JSON表示,如下所示:

val myUser = User("Nathan", "Sebhastian")
val jsonString = Gson().toJson(myUser)
println(jsonString)

jsonString 的变量值将如下:

{"firstName":"Nathan","lastName":"Sebhastian"}

Kotlinclassdata class 实例都可以用同样的方式进行序列化。

将JSON转换成Kotlin类格式

Gson也可以通过调用fromJson() 方法将JSON字符串转换回Kotlin类实例。

下面的例子将userJson 字符串,并将其转换为Kotlin对象:

val userJson = """
{
"firstName": "Arya",
"lastName": "Stark"
}"""

val myUser = Gson().fromJson(userJson, User::class.java)

println(myUser.firstName) // Arya
println(myUser.lastName) // Stark

fromJson() 方法接受两个参数:

  • 第一个是要转换为对象的JSON字符串
  • 第二个是作为对象蓝图的类。

这就是你如何使用Gson库对JSON字符串进行反序列化。

为Kotlin类添加自定义JSON键

默认情况下,Gson将使用类的字段名作为你的JSON键。

你可以使用@SerializedName 注解为你的每个字段名定义自定义JSON键,如下所示:

data class User(
@SerializedName("first_name")
val firstName: String,
@SerializedName("last_name")
val lastName: String
)

当你调用toJson() 方法时,JSON键将使用注释,如下图所示:

val myUser = User("Nathan", "Sebhastian")
val jsonString = Gson().toJson(myUser)
println(jsonString)
// {"first_name":"Nathan","last_name":"Sebhastian"}

当你调用fromJson() 方法时也是如此。

这就是你如何在Kotlin类实例中使用Gson库。

当你的Kotlinclass 的唯一目的是为JSON值提供一个蓝图时,建议创建一个data class ,而不是一个普通的class

在这里了解更多关于Kotlin数据类的信息。