2017-09-04 40 views
-1

如何解析「interestpolls」字典,我想在數組中追加這個poll_id。如何解析這種類型的字典?

我正在嘗試這種方式,但它沒有工作;爲解析這本字典提供了方法。

if let result = JSON?["result"] as? String 
        { 
         if result == "success" 
         { 
           if let n=JSON?["interestpolls"] as? [String:Any] 
           { 

//parsing code 
} 
} 
} 

如何解析這個字典中斯威夫特:

{ 
     "result": "success", 
     "err_message": "Polls found successfully", 
     "err_code": "E100", 
     "interestpolls": [ 
     { 
      "rank": 4, 
      "poll_id": 49, 
      "poll_text": "Video Image Poll ?", 
      "poll_type": "S", 
      "user_id_creator": 29, 
      "user_full_name": "Sam", 
      "profile_pic": "https://pollyscrackers.s3.amazonaws.com/users/profile_pic_29_1503498846.jpg", 
      "poll_visibility": "W", 
      "dt_created": 1503988510696, 
      "poll_media_url": "https://pollyscrackers.s3.amazonaws.com/polls/poll_49_1503988510.jpg", 
      "poll_results": { 
      "poll_results_vote_based": { 
       "totalvotes": 3, 
       "Yes": 3, 
       "No": 0 
      } 
      } 
     }, 
     { 
      "rank": 1, 
      "poll_id": 6, 
      "poll_text": "New Poll", 
      "poll_type": "S", 
      "user_id_creator": 10, 
      "user_full_name": "Mohan Roy vaghela", 
      "profile_pic": "https://pollyscrackers.s3.amazonaws.com/users/profile_pic_10_1504077441.gif", 
      "poll_visibility": "W", 
      "dt_created": 1501746922046, 
      "poll_media_url": "https://pollyscrackers.s3.amazonaws.com/polls/poll_6_1501746922.jpg", 
      "poll_results": { 
      "poll_results_vote_based": { 
       "totalvotes": 14, 
       "Answer1": 7, 
       "Answer2": 6 
      } 
      } 
     }, 
     { 
      "rank": 2, 
      "poll_id": 28, 
      "poll_text": "What is the way to become enterprenur", 
      "poll_type": "S", 
      "user_id_creator": 1, 
      "user_full_name": "Akshay", 
      "profile_pic": "https://pollyscrackers.s3.amazonaws.com/users/profile_pic_1_1504503078.jpg", 
      "poll_visibility": "W", 
      "dt_created": 1501746922046, 
      "poll_media_url": "https://pollyscrackers.s3.amazonaws.com/polls/poll_8_1502198168.jpg", 
      "poll_results": { 
      "poll_results_vote_based": { 
       "totalvotes": 4, 
       "Startup with job": 1, 
       "Startup without job": 3 
      } 
      } 
     }, 
     { 
      "rank": 3, 
      "poll_id": 29, 
      "poll_text": "Who is best prgrammer in world", 
      "poll_type": "S", 
      "user_id_creator": 1, 
      "user_full_name": "Akshay", 
      "profile_pic": "https://pollyscrackers.s3.amazonaws.com/users/profile_pic_1_1504503078.jpg", 
      "poll_visibility": "W", 
      "dt_created": 1501746922046, 
      "poll_media_url": "https://pollyscrackers.s3.amazonaws.com/polls/poll_8_1502198168.jpg", 
      "poll_results": { 
      "poll_results_vote_based": { 
       "totalvotes": 4, 
       "AKS": 2, 
       "SASK": 2 
      } 
      } 
     } 
     ] 
    } 
+1

'interestpolls'需要被鑄成一個數組...'[「interestpolls」 ]爲? [[String:Any]]' – Scriptable

回答

1

您鑄造它作爲興趣投票的解釋,將它轉換爲一個數組。嘗試下面的代碼。

var pollIDList = [String]() 

if let result = JSON?["result"] as? String { 
    if result == "success" { 
    let array = JSON?["interestpolls"] as? Array 
    pollIDList.append(array["poll_id"]) 
    } 
} 
1

試試這個:

if let result = JSON?["result"] as? String 
{ 
    if result == "success" 
    { 
     if let n=JSON?["interestpolls"] as? [[String:Any]] 
     { 
      for data in n { 
       if let id = data["poll_id"] as? String { 
        self.pollIDList.append(id) 
       } 
      } 

     } 
    } 
} 
0

爲 「爲烏邦」 指出,您的interestpolls鍵/值對包含數組,而不是一個字典。

另一點是,你可以創建一個複雜的if語句,而不是嵌套一大堆if S:

if let result = JSON?["result"] as? String, 
    result == "success", 
    let polls = JSON?["interestpolls"] as? [[String: Any]] { 
    for aPollDict in polls { 
     //your code to parse a poll here 
    } 
} 
+0

這是一個優雅的解決方案,而不使用多個'if's。好的! –