2017-09-21 24 views
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や他の通常の方法でこれを解析することはできません。

+0

ヒント:一枚ずつしてください。 'json [" data "] [" apiKey "] [" secret "]。stringValue'と書くと、どこが"失敗 "したのか分かりません。したがって、 '' json ["data"]、 '' json ["data"] ["apiKey"] '、そして' 'json [" data "] [" apiKey "] [" secret "]'しかし '[" apiKey "]'の後に '["データ "]をする必要があることがわかります。 – Larme

+0

私の入力の珍しいフォーマットのため、私はjson ["data"]を取得し、これを再びjson = json = tryとすると、stringからjsonに解析しなければなりませんでしたか? JSON(データ:データ){ let parsedJSON:AnyObject? =(json ["data"]。stringValue).parseJSONString // json ["data"]を渡してレベルを下げるstringValue swifyJSON = JSON(parsedJSON)// SwiftyJSON準備完了} –

+0

拡張子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}}} –

答えて

0

値に間違った方法でアクセスしています。 json["data"]["apiKey"]["data"]["secret"].stringValueで値にアクセスする必要があります。