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 "]'の後に '["データ "]をする必要があることがわかります。 – Larme
私の入力の珍しいフォーマットのため、私はjson ["data"]を取得し、これを再びjson = json = tryとすると、stringからjsonに解析しなければなりませんでしたか? JSON(データ:データ){ let parsedJSON:AnyObject? =(json ["data"]。stringValue).parseJSONString // json ["data"]を渡してレベルを下げるstringValue swifyJSON = JSON(parsedJSON)// SwiftyJSON準備完了} –
拡張子JSONSerialization.jsonObjectを試してみましょう。jsonData = data {do {let {JSONSerialization.jsonObject(with:jsonData、options: .mutableContainers) の場合、jsonResult = messageを? NSMutableArray {return jsonResult // json配列の出力を返します} else if jsonResult = message as? NSMutableDictionary {return jsonResult // jsonディクショナリの出力を返します} else {return nil}} NSError {print( "エラーが発生しました:\(エラー)"} return elseなし}} else {return nil}}} –