0
我嘗試解析來自推送通知的一些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」] [「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}}} –