你好,我是新手,这给了我一些问题。
我有一个来自SDK的函数,结果返回了Any
,这就是实际数据:
/*{
code = 1;
msg = success;
result = {
macAddress = "E6:1D:4D:71:64:9B";
};
}*/
我想出了一种获取所需数据的方法,但这似乎很复杂。
sucBlock: {
(mac) in
if let macAddress = ((mac as AnyObject)["result"] as AnyObject )["macAddress"] as! Optional<String>{
print("macAddress:" + macAddress)
}
}
是否有更好的方法来实现此结果?我试图创建一个struct
并键入强制转换此对象,但是总以某种方式失败。
答案 0 :(得分:1)
在这种情况下,您需要避免使用AnyObject
和as!
if let macAddress = mac as? [String:Any] , let item = macAddress["result"] as? [String:String] , let str = item["macAddress"] {
print("str:" + str)
}
如果您需要一个结构体(不要以为您的简单json确实值得)
do {
let data = try JSONSerialization.data(withJSONObject:mac)
let res = try JSONDecoder().decode(Root.self, from:data)
print(res.result.macAddress)
}
catch {
print(error)
}
struct Root: Codable {
let code: Int
let msg: String
let result: Result
}
// MARK: - Result
struct Result: Codable {
let macAddress: String
}