【发布时间】:2014-12-10 06:30:59
【问题描述】:
我有这样的结构:
struct Company {
let name:String
let id:Int
}
我想从 JSON 中解析一组公司。
您能帮我在 Swift 中如何做到这一点吗?
【问题讨论】:
-
你可以使用 SwiftyJSON,github.com/SwiftyJSON/SwiftyJSON
我有这样的结构:
struct Company {
let name:String
let id:Int
}
我想从 JSON 中解析一组公司。
您能帮我在 Swift 中如何做到这一点吗?
【问题讨论】:
这是为未来的人们准备的。在 Swift 4 中,JSONDecoder 有一个非常好的解决方案。
使用 Alamofire 代码将如下所示 -
Alamofire.request(Router.login(parameters: parameters)).responseJSON {
response in
switch response.result{
case .success(_):
let decoder = JSONDecoder()
guard let _ = response.data else{
return
}
do {
let loginDetails = try decoder.decode(LoginDetails.self, from: response.data!)
// get your details from LoginDetails struct
} catch let err{
print(err)
}
case .failure(let error):
print(error)
}
}
https://developer.apple.com/documentation/foundation/jsondecoder
https://medium.com/xcblog/painless-json-parsing-with-swift-codable-2c0beaeb21c1
希望对你有帮助!!!
【讨论】:
guard let _ 是非常糟糕的语法,如果您以后确实需要绑定变量。
不幸的是,JSON 解析在 swift 中并不容易。 你应该使用NSJSONSerialization 类来做。
这里有很多examples 可以查看。
【讨论】:
在 Swift3 中,可以将字典直接转换为结构使用 MappingAce
struct Company: Mapping {
let name:String
let id:Int
}
let companyInfo: [String : Any] = ["name" : "MappingAce", "id" : 1]
let company = Company(fromDic: companyInfo)
print(company.name)//"MappingAce"
print(company.id) // 1
【讨论】: