【发布时间】:2018-11-01 16:16:13
【问题描述】:
我从 Fitbit API 获取一个 json 字符串。我想将 dateTime 和 value 字段保存在 List 对象中。我正在使用杰克逊模块 kotlin。我为此创建了 ActivitiesSteps 数据类。
我不知道如何避免“活动步骤”字段,我被卡住了。
这是 JSON 正文(在我下面的代码中的变量 'jsonSteps' 中提供到 readValue 方法):
{
"activities-steps":[
{
"dateTime":"2018-04-17",
"value":"11045"
},
{
"dateTime":"2018-04-18",
"value":"14324"
},
{
"dateTime":"2018-05-16",
"value":"11596"
}
]
}
这是我保存数据的课程:
data class ActivitiesSteps(var dateTime: String, var value: String)
这是我使用杰克逊的代码:
val mapper = jacksonObjectMapper()
val stepsList = mapper.readValue<List<ActivitiesSteps>>(jsonSteps)
并抛出以下异常:
Exception in thread "main" com.fasterxml.jackson.databind.exc.MismatchedInputException:
Cannot deserialize instance of `java.util.ArrayList` out of
START_OBJECT token at
[Source: (String)"{"activities-steps":[
{"dateTime":"2018-04-17","value":"11045"},
{"dateTime":"2018-04-25","value":"8585"},
{"dateTime":"2018-04-26","value":"11218"},
{"dateTime":"2018-04-27","value":"10462"},
{"dateTime":"2018-04"[truncated 762 chars]; line: 1, column: 1]
【问题讨论】: