如何读取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
}
答案 0 :(得分:1)
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)