试图调用一个返回简单json的rest端点,但是我一直失败。
结果如下:
{
"Products": [
{
"Name": "ABC",
"Guid": "4711"
},
{
"Name": "DEF",
"Guid": "9876"
},
{
"Name": "HGT",
"Guid": "159"
}
]
}
我的代码如下:
override fun getProductMetaList(): List<BestProductMetaInfo> {
val url = "https://$baseUrl/api/meta"
return this.getForObject(url, GetProductMetaListResult::class.java)?.Products ?: emptyList()
}
...
@JsonIgnoreProperties(ignoreUnknown = true)
data class GetProductMetaListResult(
@JsonProperty("Products")
var Products: List<ProductMetaInfo> = emptyList()
)
@JsonIgnoreProperties(ignoreUnknown = true)
data class ProductMetaInfo(
@JsonProperty("Guid")
var Guid: String = "",
@JsonProperty("Name")
var Name: String = ""
)
结果总是:
嵌套的例外是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法 构造的实例
GetProductMetaListResult
(尽管至少存在一个创建者):没有字符串参数 从字符串值反序列化的构造函数/工厂方法
我尝试使用默认值和可为空的值,但所有结果都相同。
答案 0 :(得分:0)
当您的API响应以{开始时,这是一个JSON对象。但是您正在尝试将其转换为List,结果发生了异常。
首先将其解析为JSON对象,然后从其结果中获取列表。