陆之岇
fastjson2-kotlin
近期fastjson2
发布了2.0.3
版本, 其中新增了fastjson2-kotlin
模块。
这个模块是对fastjson2
使用kotlin
的特性做的拓展支持,这个模块起源由我发展,于是做使用方式介绍。
简单使用
添加依赖
Maven:
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-kotlin</artifactId>
<version>2.0.3</version>
</dependency>
Kotlin Gradle:
dependencies {
implementation("com.alibaba.fastjson2:fastjson2-kotlin:2.0.3")
}
随着时间流逝, 上面的版本号可能过时了, 您可以前往 Maven Central 获取最新版本号
使用准备
首先用例定义一个类
class User(
var id: Int,
var name: String
)
反序列化
import com.alibaba.fastjson2.*
val text = """{"id":1,"name":"kraity"}"""
val user = text.parseObject<User>()
这样就反序列化了一个User对象, 对很简洁。
那有没有更简洁的呢?
val user = text.to<User>()
这样是不是更简洁了呢!
2022-05-15更新
我们在FASTJSON2开发群中, @温少 发送了一条关于新增功能JSONScheme
的用例
用例中使用了toJavaObject
, 我提及到这个方法名有些冗余, 经过讨论决定重命名为to
那么在复杂泛型中, 上面的写法可能不符合预期, 例如
text.to<Map<String, User>>()
它可能会不符合预期
我于是在fastjson2-kotlin
模块中, 新增into
名的方法,
其内部使用 TypeReference
, 正确写法为
text.into<Map<String, User>>()
这将会符合预期!
序列化
val text = user.toJSONString() // String
val text = user.toJSONByteArray() // ByteArray
判断格式
判断一个文本数据是否为合法的格式
import com.alibaba.fastjson2.*
val text = "{...}"
val bool = text.isJSONObject()
val text = "[...]"
val bool = text.isJSONArray()
注册组件
import com.alibaba.fastjson2.reader.*
// ObjectReader
val reader = ...
// Boolean
val status = reader.register<User>()
import com.alibaba.fastjson2.writer.*
// ObjectWriter
val writer= ...
// Boolean
val status = writer.register<User>()
复杂泛型
TypeReference
在Java
中使用时候, 写的代码可能不太好看或者不太简洁
Java:
TypeReference<Response<User>> refer = new TypeReference<Response<User>>() {
};
那么在kotlin
中, 只需要调用一个函数即可啦
Kotlin:
val refer = reference<Response<User>>()
对没错, 就是这么简洁
结尾
快乐时光就是这么短暂, 本文结尾啦, 已简单的介绍fastjson2-kotlin
的其中一些方法, 如果想了解更多可以前往 GitHub仓库 查看函数的注释, 我一般都做了使用用例!
更新于: 2022年05月15日 22:34
810
4
👻看不懂 点赞就对了
快一起来学习😝
过来点赞就对了😌
哈哈哈对对😜