# 1. 使用准备
如果项目使用`Kotlin`,可以使用`fastjson-kotlin`模块,使用方式上采用`kotlin`的特性。
### 1.1 添加依赖
`Maven`:
```xml
com.alibaba.fastjson2
fastjson2-kotlin
2.0.53
```
酌情添加标准库(kotlin-stdlib)、反射库(kotlin-reflect),
其中若使用数据类(data class)、通过构造函数传入参数则添加反射库。
```xml
org.jetbrains.kotlin
kotlin-stdlib
${kotlin-version}
org.jetbrains.kotlin
kotlin-reflect
${kotlin-version}
```
* `Kotlin Gradle`:
```kotlin
dependencies {
implementation("com.alibaba.fastjson2:fastjson2-kotlin:2.0.53")
}
```
```kotlin
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
}
```
### 1.2 导包工作
每当调用`fastjson-kotlin`里的函数时,需要完成导包工作,**否则会提示找不到相应函数**。
例如:
```kotlin
import com.alibaba.fastjson2.to
import com.alibaba.fastjson2.into
```
如果使用的函数很多时,可以使用通配符导入。
```kotlin
import com.alibaba.fastjson2.*
```
# 2. 简单使用
这里,我们对函数名为`to`和`into`做了统一。
- 使用`to`时利用`::Class.java`,适用于不含泛型的类。
- 使用`into`时利用`TypeReference`,适用于含泛型的类。
首先实例定义一个公共类
```kotlin
class User(
var id: Int,
var name: String
)
```
### 2.1 将`JSON`解析为`JSONObject`
```kotlin
val text = "..." // String
val data = text.parseObject()
val bytes = ... // ByteArray
val data = bytes.parseObject() // JSONObject
```
### 2.2 将`JSON`解析为`JSONArray`
`Kotlin`:
```kotlin
val text = "..." // String
val data = text.parseArray() // JSONArray
```
### 2.2 实例指定类的`TypeReference`
```kotlin
val refer = reference()
```
### 2.3 将`JSON`解析为实例对象
无泛型实例:
```kotlin
val text = "..." // String
val data = text.to() // User
```
含泛型实例:
```kotlin
val text = "..." // String
val data = text.into>() // List
val data = text.into