Json到Kotlin Data类

OZK*_*ZKA 6 json scala spray kotlin data-class

是否有一种方法和/或库可以自动从Json创建Kotlin Data类,就像在Scala Json.Spray中一样?

像这样的东西:

data class User(id: Int, name: String)

class DataClassFactory(val json: String) {
   fun getUser(): User {
      //some reflection
      return User(10, "Kirill")
  }
}

fun main(args: Array<String>): Unit {
  val json = "{id: 10, name: Kirill}"
  val usr = DataClassFactory(json).getUser()
  println(usr)
}
Run Code Online (Sandbox Code Playgroud)

Jay*_*ard 5

您可以使用Jackson模块为Kotlin轻松地从Jackson支持的任何格式(包括JSON)序列化/反序列化.这是最简单的方法,并且支持没有注释的Kotlin数据类.有关模块的信息,请参阅https://github.com/FasterXML/jackson-module-kotlin,其中包含使用Maven和Gradle的最新信息(您可以推断IVY并从Maven存储库下载JAR)

存在替代品,例如Boon,但它没有对Kotlin的特定支持(通常是没有默认构造函数的问题)并且使用一些不安全的直接访问内部JVM类来获得性能.这样做,它可能会崩溃在一些虚拟机上,并且在你使用自定义序列化器/反序列化器从Kotlin扩展Boon的情况下,它假设关于在Kotlin中不成立的类(例如String类被包装),我有看到核心转储.Boon快速闪电,在使用前要小心这些问题并先测试.

(注意:我是Jackson-Kotlin模块的创建者)