【发布时间】:2020-01-22 19:38:54
【问题描述】:
我有以下 json 字符串:
{"weight":[{"bmi":24.75,"date":"2020-01-20","logId":1000,"source":"API","time":"23:59:59","weight":200}]}
我想将其转换为 Swift 对象以访问不同的值。这是我想要做的,我有这些结构设置:
struct FitbitResponseModel: Decodable {
let weight: [FitbitResponseData]
}
struct FitbitResponseData: Decodable {
let bmi: Int
let date: String
let logId: Int
let source: String
let time: String
let weight: Int
}
然后我有这个方法来解码json字符串:
func parseJSON(data: Data) -> FitbitResponseModel? {
var returnValue: FitbitResponseModel?
do {
returnValue = try JSONDecoder().decode(FitbitResponseModel.self, from: data)
} catch {
print("Error took place: \(error.localizedDescription).")
}
return returnValue
}
但是,当我尝试运行它时,我收到无法读取数据的错误,因为它的格式不正确。我究竟做错了什么?任何帮助表示赞赏。
提前致谢!
【问题讨论】:
-
离题但在你的
catch中你应该打印error而不是error.localizedDescription以获得更详细的错误信息 -
如果你看到
bmi应该是一个 Double -
@JoakimDanielson 是的,我正要评论这是错误,问题是 bmi 是一个 Int 并且导致了错误。将其更改为 Float 并且有效!