2017-11-11 25 views
1

私はCodableAlamofire拡張機能を持つAlamofireを使用していますが、私はjson応答で1つのデータを取得するのに問題があります。CodableAlamofireからオブジェクトの配列を取得

これは私のJSONです:

{ 
    "total": 95, 
    "per_page": 100, 
    "current_page": 1, 
    "last_page": 1, 
    "from": 1, 
    "to": 95, 
    "data": [ 
     { 
      "id": 1, 
      "name": "ONE", 
      "city": "CITY 1" 
     }, 
     { 
      "id": 2, 
      "name": "TWO", 
      "city": "CITY 2" 
     }, 
     { 
      "id": 3, 
      "name": "THREE", 
      "city": "CITY 3" 
     } 
    ] 
} 

私はこれらの構造体があります。

struct AssetResult: Decodable { 
    let current_page : Int 
// let data : [AssetData] 
    let from : Int 
    let last_page : Int 
    let per_page : Int 
    let to : Int 
    let total : Int 


    enum CodingKeys : String, CodingKey { 
     case current_page 
//  case data 
     case from 
     case last_page 
     case per_page 
     case to 
     case total 
    } 
} 

struct AssetData: Decodable { 
    let city : String 
    let id : String 
    let name : String 
} 

そして、これはAssetResult構造体のデータを取得するためのコードです:

let parameters: Parameters = ["page": 1] 
let url = URL(string: "http://url")! 
let decoder = JSONDecoder() 

Alamofire.request(url, parameters: parameters).responseDecodableObject(keyPath: nil, decoder: decoder) { (response: DataResponse<AssetResult>) in 
      let repo = response.result.value 
      print(repo) 
     } 

問題を毎回私はdataを取得しようとしています(のコメントを外してくださいAssetResult構造内の)print(repo)nilになります。

私は聞かせている場合、これが印刷され、コメントdata

Optional(AssetResult(current_page: 1, from: 1, last_page: 1, per_page: 100, to: 95, total: 95))

は、どのように私は、オブジェクトの配列を得ることができますか? AssetDataオブジェクトの配列として使用することをお勧めします。

おかげ

答えて

0

私はJSONリターンでいくつかのテストを実行し、いくつかの資産は、エラーの原因となった、街ずに登場することを実現:

{ 
    "id": 10, 
    "name": "TEN", 
    "city": null 
}, 

オプションにだから私だけで必要な変更の街を、追加しますタイプ後の?タイプ:

struct AssetData: Decodable { 
    let city : String? 
    let id : String 
    let name : String 
} 
関連する問題