2016-09-22 67 views
0

在我的swift應用程序中,我從webservice獲取評論。傳入的JSON的一般格式爲:我如何使用SwiftyJSON解析特定格式的json?

comments =  (
      { 
     "_id" = 57e460a4d9f58eb150470a0a; 
     content = "fsagsd"; 
     "sent_at" = "2016-09-22T22:52:20.061Z"; 
     "username" = kamil; 
    }, 
      { 
     "_id" = 57e460c0d9f58eb150470a0b; 
     content = "hfdhfd"; 
     "sent_at" = "2016-09-22T22:52:48.682Z"; 
     "username" = kamil; 
    } 
); 

這是一個實際的結果:print(response.result.value)

整個查詢(用alamofire)如下所示:

Alamofire.request(.GET, "\(serverURL)/get/\(case_id)/comments/"/*, headers: headers*/) 
     .validate() 
     .responseJSON { response in 

switch response.result { 
      case .Success: 
       print("success") 
       if let jsonData = response.result.value as? [[String: AnyObject]] { 
        for myJSON in jsonData { 
         if let myTest = SingleComment.fromJSON(JSON(myJSON)){ 
          self.items.addObject(myJSON) 
          self.myTable.reloadData() 
         } 
        } 
       } 

但因爲評論是嵌入在我的json中的comments - 我從未達到self.items.addObject(myJSON)。我想,如果傳入的JSON看起來像它的工作:

{ 
     "_id" = 57e460a4d9f58eb150470a0a; 
     content = "fsagsd"; 
     "sent_at" = "2016-09-22T22:52:20.061Z"; 
     "username" = kamil; 
    }, 
      { 
     "_id" = 57e460c0d9f58eb150470a0b; 
     content = "hfdhfd"; 
     "sent_at" = "2016-09-22T22:52:48.682Z"; 
     "username" = kamil; 
    } 

,因爲我不能改變傳入的JSON - 可以請你幫我調整我的SWIFT代碼?另外

一個信息 - fromJSON功能如下:

class func fromJSON(json: JSON) -> SingleComment? { 
    print("single comment from json") 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    let username = json["username"].string 
    let content = json["content"].string 
    let sent_at = json["sent_at"].string 
    let id = json["_id"].string 
    let upd = dateFormatter.dateFromString(sent_at!) 

    return SingleComment(username: username!, content: content!, sent_at: upd!, id: id!) 
} 

回答

1

嘗試在.Success塊這段代碼。希望它能幫助你。

if let value = response.result.value { 
            let data = JSON(value) 
            if let responseDictionary = data.dictionary { 
             if let commentsArray = responseDictionary["comments"]?.array { 
              for commentObject in commentsArray { 
               if let myTest = SingleComment.fromJSON(commentObject){ 
                self.items.addObject(myJSON) 

               } 
              } 
self.myTable.reloadData() 
             } 
            } 
    } 
+0

謝謝你的男人,它現在的作品! – user3766930

0

您的回覆似乎不是一個正確的json數據。

首先,json屬性應該分開:而不是=。在你的例子中,"_id" = 57e460c0d9f58eb150470a0b;應該是"_id" : 57e460c0d9f58eb150470a0b;

其次,響應數據似乎是jsonp格式,因爲它包含變量和分號。但是json格式仍然不正確。所以我認爲你的解決方案不是調整你的算法來適應這種奇怪的數據,你必須問你的服務器,爲什麼它提供了這樣一個奇怪的數據。