从推送通知解析时SwiftyJson解析问题
问题描述:
我尝试解析来自推送通知的一些JSON,但我无法理解个别值。从推送通知解析时SwiftyJson解析问题
if let json = try? JSON(data: data) {
print("before")
print(json["data"].stringValue) // so this prints, but format of rest seems non standard
print ("after")
}
和我最终的控制台输出:
before
{
"apiKey":{
"data":{
"user_id":8,
"id":75,
"secret":"G4UgMXXXXnt0bviGjNHCPRY4nYjuvXMrEkaU2dxqOC9j7XiIy4uS1TNLxv4Kev7w"
}
},
"verified":true,
"loneWorker":{
"data":{
"vehicle_make":null,
"gender":null,
"mobile":"+447900007213",
"vehicle_model":null,
"hair_colour":null,
"distinguishing_features":null,
"firebase_token":"dsMGqAn57eo:APA91bHcE_8hoCQ9qgJfpr4b6yDrUkkkeJL7oGx-410v7hKyZfgBkcvROHevTmojJ6CvQrspDOvvXnXo9psTRKdnlQAEYzdvBE8OtsxHf-3JRmDRbJCiTrsVowDgQ5FeN7QQaEfMbFH",
"vehicle_colour":null,
"vrm":null,
"arc":{
"data":{
"prealert_sms_number":"+447506000094",
"sos_sms_number":"+44750000894",
"id":1,
"sos_call_number":"+447500000094"
}
},
"build":null,
"dob":null,
"duress_word":null,
"name":"Stevan ",
"id":8,
"preexisting_conditions":null,
"email":"[email protected]",
"height":null
}
}
}
after
,但如果我尝试做print(json["data"]["apiKey"]["secret"].stringValue)
我什么也没得到。 我有这个心理块,并不能解决这个与SwiftyJSON或任何其他正常的方式解析...
答
您正在访问错误的方式的值。 您必须使用json["data"]["apiKey"]["data"]["secret"].stringValue
访问值。
小费:一块一块地做。因为当你写'json [“data”] [“apiKey”] [“secret”]。stringValue'时,你不知道它从哪里开始“失败”。所以'json [“data”]',然后'json [“data”] [“apiKey”]',然后'json [“data”] [“apiKey”] [“secret”]''那就是失败。但是你会看到你需要在'[“apiKey”]后面执行一个'[“data”]''。 – Larme
由于我输入的格式不正常,我必须重新获取json [“data”]并将其从字符串解析为json,如下所示:if let json = try? JSON(数据:数据){ let parsedJSON:AnyObject? =(JSON [ “数据”]。stringValue的).parseJSONString //通过传递JSON [ “数据”]。stringValue的下降的电平 让swifyJSON = JSON(parsedJSON)//使该水平SwiftyJSON准备} –
扩展String {var parseJSONString:AnyObject?{let data = self.data(using:String.Encoding.utf8,allowLossyConversion:false) if let jsonData = data {do {let message = try JSONSerialization.jsonObject(with:jsonData,options: .mutableContainers) if let jsonResult = message as? NSMutableArray {返回jsonResult//将返回json数组输出}否则,如果让jsonResult =消息为? NSMutableDictionary {return jsonResult //返回json字典输出} else {return nil}}将错误记录为NSError {print(“发生错误:\(error)”)return nil}} else {return nil}}} –