ios - 如何使用 SwiftyJSON 解析特定格式的 json?

标签 ios swift alamofire swifty-json

在我的 swift 应用程序中,我正在从网络服务中获取评论。传入的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!)
}

最佳答案

在 .Success block 中尝试此代码。希望对您有所帮助。

    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()
                                        }
                                    }
    }

关于ios - 如何使用 SwiftyJSON 解析特定格式的 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650231/

相关文章:

swift - bodyWithEdgeLoopF​​romPath : circle in swift

json - 使用字典将 alamofire 中的 JSON 数据解析为数组

iOS 应用程序崩溃 - 我怀疑它与使用 WebSockets 的 UIWebView 有关

android - 使用 Flex 创建 iPhone/Android 应用程序的缺点

c# - 如何从另一个添加了 UIViewController 的 Controller 更改标签的文本值

ios - Swift - AWS S3 从图片库上传图片并下载

swift - Swift 中的安全性会影响性能吗?

ios - Alamofire POST 路由返回数据

ios - 使用 Alamofire 上传图片不成功

ios - gameViewController 背景颜色无法更改