2016-04-29 13 views
-3

私はSwiftの初心者です。私はSwiftでhttpリクエストを作成しようとしています。SwiftでJSONの配列を解析する方法は?

私はそれに成功しましたが、私は応答を解析することができません。私はこれで多くを検索しましたが、何も見つかりませんでした。

これは私のコードです。上記のコードの

出力は次のとおりです。

{ 

    Login =  { 

     AccountType = Pro; 
     FileSizeLimit = 157286400; 
     PasswordHash = fc27a61bc3dda36ebe28887d4da16df2093bbbcd8d58cfc87b2b48b70801c411; 

     Session =   { 
      id = ca77dd997db2169908a1a84204c99ae7; 
     }; 

     SmugVault = 0; 

     User =   { 
      DisplayName = "smug"; 
      NickName = better1; 
      id = 2455641; 
     }; 

    }; 
    method = "smugmug.login.withPassword"; 
    stat = ok; 

} 

私は表示名を取得したいです。 sessionIdを抽出できますが、名前は抽出できません。これで私を助けてください。

ベローを解決コード

FUNCのpostDataToURL(){

let userName = self.userName.text; 
    let userPassword = self.password.text; 

    let postUrl = NSURL(string: "http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.login.withPassword")! 

    let smugUrlRequest = NSMutableURLRequest(URL: postUrl) 

    smugUrlRequest.HTTPMethod = "POST" 

    let postString = "&EmailAddress=" + userName! + "&Password=" + userPassword! + "&APIKey=1WcKTxQH2fegQTF0C7cVAORjeoTSD68V" 

    smugUrlRequest.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(smugUrlRequest) { 
     data, response, error in 

     if error != nil { 
      print("error=\(error)") 
      print("ERROR") 
     } 

     if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {   // check for http errors 
      print("statusCode should be 200, but is \(httpStatus.statusCode)") 
      print("response = \(response)") 
     } 

     let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     print("responseString = \(responseString)") 

     do { 
      if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary { 
       if let stat = json["method"] as? String { 
        print(stat) // London 
       } 

       print(json) 

       let user = json["Login"]! 
       let FileSizeLimit = user["FileSizeLimit"] 
       print(FileSizeLimit) 

       let PasswordHash = user["PasswordHash"] 
       print(PasswordHash) 

       let Session = user["Session"] 
       print(Session) 

       let DisplayName = user["User"] 
       print(DisplayName) 


      } 
     } catch let error as NSError{ 
      print("\(error)") 
     } 


    } 
    task.resume() 
} 
+3

可能な複製である[私はスウィフトで解析されたJSON内の配列を解析する方法を教えてください](http://stackoverflow.com/questions/24026305/how-do-i-parse -an-array-inside-parsed-json-in-swift) –

+0

は、sessionIdの取得方法をコードで示します。 DisplayNameが非常に似ている必要があります – Fonix

+0

[JSON文字列を辞書に変換する方法は?](http://stackoverflow.com/questions/30480672/how-to-convert-a-json-string-to -a-dictionary) – 4oby

答えて

0

問題です。解決策は

let jsonData = try NSData(contentsOfFile: path, options: NSDataReadingOptions.DataReadingMappedIfSafe) 
      do { 
       let jsonResult: NSDictionary = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
       print("jsonResult : ",jsonResult) 
       print("Session : ",jsonResult.valueForKey("Login")?.valueForKey("Session")) 
       print("DisplayName : ",(jsonResult.valueForKey("Login")?.valueForKey("User")?.valueForKey("DisplayName"))!) 

      } catch { 

}の

関連する問題