我需要从Foursquare API解析JSON响应,我正在使用swift:
我有代码来发出API请求,我得到以下回复:
$symfony_dir = $_SERVER['DOCUMENT_ROOT'].'/libs/symfony/';
chdir($symfony_dir);
我在场地里找到了一个阵列,我怎样才能得到每个场地的一系列名字或图片?
谢谢。
答案 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)
}
}
}
我会将照片解析为练习,但它与解析场地的想法大致相同。