目前我正在使用login.Using api从server.i获得响应我从api.i得到成功的响应我无法解析我得到的响应。
login.swift
func convertToDictionary(text: String) -> [String: Any]? {
if let data = text.data(using: .utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
} catch {
print(error.localizedDescription)
}
}
return nil
}
let responseString = String(data: data, encoding: .utf8)
let dict = self.convertToDictionary(text: responseString!)
print("DICT::", dict as Any)
let Messaage = dict?["message"] as! String
print("MESSAGE", Messaage)
let Status = dict?["status"] as! String
print("STATUS", Status)
self.BackEndStatus = Status
let user = dict?["user"]as?[[String : AnyObject]]
print(user)
我可以打印状态和消息bt我无法打印用户。我的用户为零。
答案 0 :(得分:0)
您可以在此输入Array
[[]]
,必须使用方括号[]
进行类型转换,指向Dictionary
尝试使用方括号进行类型转换:
let user = dict?["user"] as? Dictionary<String,Any>
您的回复是:
[
"status": 1,
"user": {
address=null;
created="2017-10-09 00:29:38";
"device_id"="<null>";
"device_type"="<null>";
email="chinju@gmail.com";name=Chinju;
password=76a531c195212d35ee109be6e131ac73;
"phone_no"=8086502009;
"profile_status"=1;
"social_id"="<null>";
"social_type"="<null>";
"user_id"=31;
"user_role"=1;
},
"message": loginsuccess
])
答案 1 :(得分:0)
键user
的值是字典,而不是数组。
强烈建议使用可选绑定安全地打开选项。
为什么要将Data
转换为String
然后再转回Data
?
func convertToDictionary(data: Data) -> [String: Any]? {
do {
return try JSONSerialization.jsonObject(with: data) as? [String: Any]
} catch {
print(error.localizedDescription)
return nil
}
}
if let dict = self.convertToDictionary(data: data) {
print("DICT::", dict)
let message = dict["message"] as! String
print("MESSAGE", message)
let status = dict["status"] as! String
print("STATUS", status)
self.backEndStatus = status
if let user = dict["user"] as? [String : Any] {
print(user)
}
}
PS:请遵守变量名称以小写字母
开头的命名约定