Swift解析JSON响应

时间:2016-02-28 07:56:37

标签: arrays json swift parsing foursquare

我需要从Foursquare API解析JSON响应,我正在使用swift:

我有代码来发出API请求,我得到以下回复:

$symfony_dir = $_SERVER['DOCUMENT_ROOT'].'/libs/symfony/';
chdir($symfony_dir);

我在场地里找到了一个阵列,我怎样才能得到每个场地的一系列名字或图片?

谢谢。

1 个答案:

答案 0 :(得分:2)

没有必要的库,没有它就可以做得很好。

这是使用普通快速

进行此操作的一种方法
protocol JSONDecodable {
    typealias DecodableType
    static func decode(data: [NSString: AnyObject]) throws -> DecodableType
    static func decode(array: [[NSString: AnyObject]]) -> [DecodableType]
}

enum DecodingError: ErrorType {
    case InvalidInstance(error: String)
}

struct Photo {
    let url: NSURL
}

struct Venue {
    let id: String
    let name: String
    let photos: [Photo]
}


extension Venue: JSONDecodable {
    typealias DecodableType = Venue
    static func decode(data: [NSString : AnyObject]) throws -> DecodableType {
        guard let id = data["id"] as? String,
            let name = data["name"] as? String else {
                throw DecodingError.InvalidInstance(error: "Keys `id` and `name` were not present and Strings")
        }

        return Venue(id: id, name: name, photos: [])
    }

    static func decode(array: [[NSString : AnyObject]]) -> [DecodableType] {
        return array.flatMap {
            try? Venue.decode($0)
        }
    }
}

我会将照片解析为练习,但它与解析场地的想法大致相同。