Kotlin中多态对象的JSON序列化

前言 在最近的项目中,我同时用到了 Moshi 和 kotlinx-serialization 这两个 JSON 库,两者的 API 都很简洁且实用。 与 Gson 的反射机制不同,Moshi 和 kotlinx-serialization 都提供了预编译机制,可以在编译期间分别生成 Adapter 和 Serializer,从而能够以类型安全、更高效的方式完成 JSON 的序列化和反序列化。 Moshi 源于 Square ,与 Retrofit 的集成度较高,对 Android 平台的开发者比较友好 可以借助 kapt/ksp 在编译期生成 XxxJsonAdapter.kt 文件 kotlinx-serialization 源于 JetBrains,属于官方推出的扩展包,能够很方便的集成到 Ktor 中 基于 kotlin compiler plugin,在编译期生成字节码文件(Xxx$$serializer.class) 支持 KMP,能够跨平台使用。 例如:定义一套 DTO,同时在 Android端、iOS端、前端、桌面端、服务端复用。 官方支持 JSON、Protobuf、CBOR、Hocon、Properties 等格式 有大量的三方扩展,支持 TOML、XML、YAML、BSON、NBT、SharePreference、Bundle 等格式 如果你在使用 kotlin 进行日常开发工作,非常推荐你去体验和使用这两个 JSON 库。...

March 13, 2022

自定义 Gradle 插件开发(一)

Gradle 插件简介 Gradle 插件是一个能够将 Gradle 的构建逻辑(build logic)和构建任务(build task)打包到一起,以便在多个项目的构建脚本(build.gradle)中应用(apply)的工具。 例如,build.gradle 构建脚本文件内 apply plugin: 'java' 、apply plugin: 'com.android.application' 中的 java、com.android.application 就是官方提供的 Gradle 插件,通过应用这些插件,可以丰富项目的构建任务与构建逻辑。 除官方提供的插件外,Gradle 还允许开发者定义自己的 Gradle 插件。开发者可以根据实际需求定义自己的构建逻辑和构建任务,将其打包为 Gradle 插件,从而在多个项目的构建脚本中复用。此外,还可以将自定义的 Gradle 插件发布到 plugin portal 或其他仓库中,更为方便的分享给他人使用。 Gradle 插件对编程语言没有太多限制,只要是能够被编译为 JVM 字节码的编程语言,都能用来编写 Gradle 插件。Gradle-API 的被设计为对 Groovy、Java、Koltin 友好的,通常情况下,使用 Java 或 Kotlin 这类静态类型语言实现的 Gradle 插件的性能要比使用 Groovy 实现的相同常见的性能更好。 开始之前 Gradle 作为一个普通的构建工具,本身并不依赖任何可视化 GUI 工具。为简化步骤,本文将采用命令行方式来完成自定义 Gradle 插件的演示。在开始之前,需先将 gradle 命令添加到系统环境变量中。 若读者在 IDEA / Android Studio 使用过 gradle ,则可在当前用户目录下找到 gradle 命令,具体路径如下 Mac:/Users/当前用户名/.gradle/wrapper/dists/gradle版本/沙盒路径/gradle版本/bin Win:C:\Users\当前用户名\....

September 7, 2019

Kotlin/Everywhere BeijingGDG 见闻录

Kotlin-Everywhere 在今年五月份的 Google I/O 大会上,Google 宣布了 Android 应用开发中 Kotlin 优先的战略,此后 Google 提供的 API(例如 Jetpack 工具库)将以 Kotlin 优先。大会结束后不久,Google 便联合 Jetbrains 在全球范围内推出了 Koltin/Everywhere 计划。Kotlin/Everywhere 计划 是由各地社区主导的一系列活动,旨在关注 Kotlin 在多平台上的潜力,并为学习 Kotlin 的基本要素与最佳实践提供帮助,包括但不限于 Android、服务端、前端和其他平台。 Kotlin-Everywhere Beijing 笔者有幸和一位朋友一起参加了北京 GDG 与 Kotlin 中文社区共同主办的 Kotlin/Everywhere Beijing ,这场活动的嘉宾阵容空前强大,台下观众高朋满座,各路大咖云集,可谓之国内规格最高的一场 Kotlin/Everywhere 活动。会议的全程录像可在 大咖说 回放。 日程安排 时间 主题 嘉宾 9:00-10:00 签到入场 - 10:00-10:10 开场介绍 韩国恺 10:10-10:50 What’s New in Kotlin Svetlana Isakova 10:50-11:30 携程 Kotlin Multiplatform 工程实践 陈琦 11:30-12:10 潜力无限:Kotlin 用于服务端与 WebAssembly 贾彦伟 12:10-13:40 中午午休 - 13:40-14:20 Boost Your Productivity with Kotlin 陈龙博 14:20-15:00 Be Friends with kotlinc 段建华 15:00-15:20 下午茶歇 - 15:20-16:00 Kotlin High-Performance Programming 朱涛3 16:00-16:40 Kotlin Coroutine 朱凯 16:40-17:20 Kotlin 函数式编程 乔禹昂 上午 我和朋友于九点半到达活动会场,会场签到处有 kotlin 主题的挎包、徽章、冰箱贴、贴纸等伴手礼,签到进场后发现观众席已落座 300 余人,便匆忙在一个靠中间的位置坐下,会场大屏播放着 Kotlin 相关的视频,视频中世界各地的开发者在表达着对 Kotlin 语言的喜爱,现场观众席也充斥着对 Kotlin 的探讨之声。...

August 31, 2019