で光沢とAlamofireと構文解析JSONデータ私はスウィフト3、グロス1.1およびAlamofire 4.0とWebRequestクラスからJSONオブジェクトをデコードしようとしている: JSONレスポンスは次のようになります。迅速
{
"code": "0",
"message": "OK.",
"data": [
{
"timestamp": 1480885860,
"open": 10.99
},
{
"timestamp": 1480886040,
"open": 11
}
]
}
私のJSON Decodables
struct ResponseJsonModel : Decodable {
let code : Int
let message : String
let data : [MarketPriceJsonModel]?
// <~~
init?(json: JSON) {
guard let codeInt : Int = "code" <~~ json else {
print("code unwrapping failed in guard")
return nil
}
guard let messageStr : String = "message" <~~ json else {
print("message unwrapping failed in guard")
return nil
}
self.code = codeInt
self.message = messageStr
self.data = "data" <~~ json
}
}
struct MarketPriceJsonModel : Decodable {
let timestamp : NSDate
let open : Double
init?(json: JSON) {
guard let timestampInt : Int = "timestamp" <~~ json else {
print("timestamp unwrapping failed in guard")
return nil
}
guard let open : Double = "open" <~~ json else {
print("open price unwrapping failed in guard")
return nil
}
self.timestamp = NSDate(timeIntervalSince1970: Double(timestampInt))
self.open = open
}
}
私はGlossが新しく、なぜ自分の解読可能オブジェクトの初期化が失敗するのか理解できません。
Alamofire.request(url).validate().responseJSON { response in
switch response.result {
case .success:
guard let value = response.result.value as? JSON,
let responseModel = ResponseJsonModel(json: value) else {
print("responseModel failed")
return
}
print(responseModel.message)
case .failure(let error):
print(error)
}
}
コードの出力はresponseModelガードに
を失敗したアンラッピング
コードが
を失敗したが、なぜか?
私はinit?()にブレークポイントを追加し、デバッグ領域でjson-variableを調べると、要求はうまくいっても解析は失敗します。
何かが失敗した場合には、より良い例外メッセージを取得する方法はありますか?
すべての入力が高く評価されています。