将 JSON 文件读取到对象 Kotlin



如何读取JSON文件,然后将其放入MongoDB模型中定义的对象中@Document - 模型。 我正在寻找像 Java 中的杰克逊对象映射器这样的东西。它在这里不起作用 documen - 模型没有空的构造函数。

@Document(collection = "XXX")
class Room(@Id
private val id: String?,
private val name: String){there is toString() method}

class Application{
@Bean
fun imageProcess(repo: MongoRepository) = CommandLineRunner {
println("----------------Save customers!")

for (room in read("C:/Users/Desktop/new.json")) {
repo.save(room)
}
}
val mapper = ObjectMapper().registerModule(KotlinModule())
fun read(path: String): Array<Room>? {
var temp: Array<Room>? = null
try {
temp = mapper.readValue(File(path), Array<Room>::class.java)
} catch (ex: IOException) {
ex.printStackTrace()
}
return temp

}

Jackson 应该与这个模块一起工作: https://github.com/FasterXML/jackson-module-kotlin

"以前,Kotlin 对象上必须存在默认构造函数,Jackson 才能反序列化为该对象。有了这个模块,可以自动使用单个构造函数类,并且还支持那些具有辅助构造函数或静态工厂的构造函数类。

import com.fasterxml.jackson.module.kotlin.*
data class MyStateObject(val name: String, val age: Int)
...
val mapper = jacksonObjectMapper()
val state = mapper.readValue<MyStateObject>(json)
// or
val state: MyStateObject = mapper.readValue(json)
// or
myMemberWithType = mapper.readValue(json)

最新更新