将Alamofire结果分配给数组

时间:2020-05-28 15:28:17

标签: arrays swift alamofire

我正在尝试将Alamofire检索到的结果分配给数组,并且遇到问题。

我正在使用产品的Stripe API,它返回一个名为“ data:”的JSON对象,我试图将该数据对象仅分配给我拥有的产品数组。

这是我的代码

var products: [Product] = []
let stripeProducts = "stripe-products-api"

func createArray() {
  let stripeAuthHeader: HTTPHeaders = []

  AF.request(stripeProducts, headers: stripeAuthHeader).responseJSON {
     switch response.result {
     case .failure(let error):
       print(error)
     case .success:
       self.products = response.data \\ trying to access the data object from the JSON data
       print(self.products)
     }
  }
}

JSON:


 "object": "list",
  "data": [
    {
      "id": "prod_123456",
      "object": "product",
      "active": true,
      "attributes": [

      ],
      "created": 1590423835,
      "description": "Test",
      "images": [
        ""
      ],
      "livemode": false,
      "metadata": {
        "address": "Test"
      },
      "name": "Blue Jeans",
      "statement_descriptor": null,
      "type": "service",
      "unit_label": null,
      "updated": 1590653248
    }
]

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要具有产品结构

  struct Datum: Decodable {
    let id, object: String
    let active: Bool
    let created: Int
    let datumDescription: String
    let images: [String]
    let livemode: Bool
    let metadata: Metadata
    let name: String
    let type: String
    let updated: Int

    enum CodingKeys: String, CodingKey {
        case id, object, active, created
        case datumDescription = "description"
        case images, livemode, metadata, name
        case type
        case updated
    }
}

// MARK: - Metadata
struct Metadata: Decodable {
    let address: String
}

然后像这样解析

let products = try? newJSONDecoder().decode(Products.self, from: response.data)
相关问题