Swift 将数据映射到 [String: Any]
Swift Mapping Data to [String: Any]
我想将数据类型转换为 [String: Any],但 JSONSerialization 告诉我:
Cannot force unwrap value of non-optional type 'Data'
var json: [String: Any]
do{
let jsonEncoder = JSONEncoder()
let encodedJson = try jsonEncoder.encode(message)
json = try JSONSerialization.data(withJSONObject: encodedJson!, options: []) as? [String : Any]
} catch {
log.error(error.localizedDescription)
}
return .requestParameters(parameters: json, encoding: JSONEncoding.default)
如果我删除 '!'来自 encodedJson,然后消息出现:
Value of optional type '[String : Any]?' not unwrapped; did you mean to use '!' or '?'?
如果我删除'?'从任何?,然后我使用 json 没有初始化它,当然
不知道如何解决这个问题(新 swift 程序员)
希望这不是一个愚蠢的问题
没有必要这样做,因为您已经在 encodedJson
中有了数据
json = try JSONSerialization.data(withJSONObject: encodedJson!, options: []) as? [String : Any]
因为 withJSONObject
需要一个不是 Data 的对象,同样将其转换为 [String:Any]
也会失败
您使用了错误的 API,data(withJSONObject
从数组或字典创建 Data
你需要反过来。要解决问题,请删除 encodedJson
后的感叹号
json = try JSONSerialization.jsonObject(with: encodedJson) as? [String : Any]
并声明 json
为可选的
var json: [String: Any]?
或者 – 如果 JSON 保证始终是字典 – 强制展开对象
json = try JSONSerialization.jsonObject(with: encodedJson) as! [String : Any]
我想将数据类型转换为 [String: Any],但 JSONSerialization 告诉我:
Cannot force unwrap value of non-optional type 'Data'
var json: [String: Any]
do{
let jsonEncoder = JSONEncoder()
let encodedJson = try jsonEncoder.encode(message)
json = try JSONSerialization.data(withJSONObject: encodedJson!, options: []) as? [String : Any]
} catch {
log.error(error.localizedDescription)
}
return .requestParameters(parameters: json, encoding: JSONEncoding.default)
如果我删除 '!'来自 encodedJson,然后消息出现:
Value of optional type '[String : Any]?' not unwrapped; did you mean to use '!' or '?'?
如果我删除'?'从任何?,然后我使用 json 没有初始化它,当然
不知道如何解决这个问题(新 swift 程序员)
希望这不是一个愚蠢的问题
没有必要这样做,因为您已经在 encodedJson
json = try JSONSerialization.data(withJSONObject: encodedJson!, options: []) as? [String : Any]
因为 withJSONObject
需要一个不是 Data 的对象,同样将其转换为 [String:Any]
也会失败
您使用了错误的 API,data(withJSONObject
从数组或字典创建 Data
你需要反过来。要解决问题,请删除 encodedJson
json = try JSONSerialization.jsonObject(with: encodedJson) as? [String : Any]
并声明 json
为可选的
var json: [String: Any]?
或者 – 如果 JSON 保证始终是字典 – 强制展开对象
json = try JSONSerialization.jsonObject(with: encodedJson) as! [String : Any]