我正在尝试从JSON解码(我将swiftyJSON和Alamofire用于我的HTTP请求)。 swiftyJsonVar是我的JSON对象
let decoder = JSONDecoder()**
let user = try! decoder.decode([User.self], for:(swiftyJsonVar))**
写此代码时,我出现以下错误
调用中的参数标签不正确(具有':for:',预期为':from:'
因此,当我从“”切换到“”时,出现以下错误:
无法将'JSON'类型的值转换为预期的参数类型'Data'*“
当我将从请求中获取的数据值转换为JSON之前,它工作正常,但是当响应为JSONArray时,我将无法再执行此操作。 谢谢您的帮助。
答案 0 :(得分:0)
错误“无法将类型'JSON'的值转换为预期的参数类型'数据'”明确指出了问题所在。
“ from”参数的数据类型必须为Data,因此您需要转换swiftyJsonVar。如果swiftJsonVar是SwiftyJSON对象,则类似let data = try swiftyJsonVar.rawData()
。
答案 1 :(得分:0)
请,请(学习)阅读错误消息。这些非常清晰。
消息的左端是您做错了,期望之后的部分是您必须做的。
“调用中的参数标签不正确(具有':for:',预期为':from:'”
是什么意思?您编写了, for:
,但是正确的语法是, from:
。甚至还有一个 fix 按钮。
“无法将类型'JSON'的值转换为预期的参数类型'数据'”
是什么意思?您传递了JSON
类型,但正确的类型是Data
。
忘记SwiftyJSON并将接收到的原始数据传递给解码器并捕获可能的错误。另一个错误是Type
参数。如果期望一个 User
,请写User.self
,如果期望数组,请写[User].self
do {
let decoder = JSONDecoder()
let user = try decoder.decode([User].self, from: data)
} catch { print(error) }