我想要的示例代码:
data class D(val a: String, val b: Int) val jsonStr = """[{"a": "value1", "b": 1}, {"a": "value2", "b":"2}]""" // what I need val listOfD: List<D> = jacksonObjectMapper().whatMethodAndParameter?
使用Jackson Kotlin Module 当前版本,如果您导入完整的模块包或特定的扩展功能,则将提供所有扩展方法。如:
import com.fasterxml.jackson.module.kotlin.* val JSON = jacksonObjectMapper() // keep around and re-use val myList: List<String> = JSON.readValue("""["a","b","c"]""")
因此,用于Kotlin的Jackson模块将推断出正确的类型,并且您不需要TypeReference实例。
TypeReference
因此,您的情况(稍微重命名并修复了数据类和JSON):
import com.fasterxml.jackson.module.kotlin.readValue data class MyData(val a: String, val b: Int) val JSON = jacksonObjectMapper() val jsonStr = """[{"a": "value1", "b": 1}, {"a": "value2", "b": 2}]""" val myList: List<MyData> = JSON.readValue(jsonStr)
您也可以使用以下形式:
val myList = JSON.readValue<List<MyData>>(jsonStr)
如果没有导入,则会出现错误,因为找不到扩展功能。