我想要的示例代码:
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 模块当前版本 https://github.com/FasterXML/jackson-module-kotlin#status,如果您导入完整的模块包或特定的扩展函数,您将拥有所有可用的扩展方法。例如:
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
实例。
所以你的情况(稍微重命名并修复了数据类和 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)
如果不导入,您将收到错误,因为找不到扩展函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)