2017-08-21 7 views
0

swift3のjson中括弧内の複数のデータを取得する方法は?json中括弧内の複数のデータを取得する方法は? Swift

複数のデータを取得するのにこのコードを使用できますか? ( "crew_id"、 "crew_name"、 "crew_email" を取得)

if let crew = user!["crew"] as? [String:Any], let crewName = crew["crew_name"] as? String { 
print(crewName) 

JSON

crew ={ 
    "crew_avatar" = "http://ec2-52-221-231-3.ap-southeast-1.compute.amazonaws.com/gv/images/profile_image/Pang_Kang_Ming_916210_0e9.jpg"; 
    "crew_contact" =; 
    "crew_email" = "[email protected]"; 
    "crew_gender" = Male; 
    "crew_id" = PP000001; 
    "crew_name" = "Pang Kang Ming"; 
    "crew_preferred_name" = PKM; 
    "crew_qrcode" = "images/qrcode/qrcode_085960293a5378a64bec6ebfa3c89bb7.png"; 
}; 
message = "Login Sucessfully"; 
result = success; 

答えて

0

はいあなたは、ちょうどあなたがしたい値を追加することができ、このコードを試してみてくださいオプションのバインディングの1つが展開されない場合、たとえ文が実行されない場合に他のものが展開されなくても、if文を分離することを考慮してください。

jsonで返されるすべてに依存します。

if let crew = user!["crew"] as? [String:Any], 
let crewName = crew["crew_name"] as? String, 
let crewId = crew["crew_id"] as? String { 
print(crewName) 
print(crewId) 
} 

jsonレスポンスに値がない場合でも、他の値を取得することができます。

if let crew = user!["crew"] as? [String:Any] { 
    if let crewName = crew["crew_name"] as? String { 
     print(crewName) 
    } 
    if let crewId = crew["crew_id"] as? String { 
     print(crewId) 
    } 
    } 
0
if let file = Bundle.main.url(forResource: "yourJsonFileName", withExtension: "json") { 
       let data = try Data(contentsOf: file) 
       let json = try JSONSerialization.jsonObject(with: data, options: []) 

       let jsonData = json as! [[String:Any]] 
       DispatchQueue.main.async { 

        let projectName = jsonData.flatMap { $0["crew_avatar"] as? String } 
        self.crewAvatarArray = projectName 
        print(self.crewAvatarArray) 

        let subTitle = jsonData.flatMap { $0["crew_contact"] as? String } 
        self.crewContactArray = subTitle 

        let startDate = jsonData.flatMap { $0["crew_email"] as? String } 
        self.crewEmailArray = startDate 
       } 
      } 

+0

このような操作は、メインキューではなく、バックグラウンドキューで行うようにしてください。 – KeranMarinov

+0

あなたのadvice.iのtqは自分のコード構造を変更します@KeranMarinov – Ramprasathselvam

+0

UIがないので、メインスレッドに解析をディスパッチする必要はありません。これはJavaScriptやPHPではありません。変数名は* camelCased *(例: 'crewContactArray')です。 – vadian

関連する問題