首页 > 解决方案 > 从 JSON 响应中创建一个数组

问题描述

我有以下响应来获取区域,但我需要一个带有分隔符的单个数组

 {
        "name" : "Abu Hail",
        "city_id" : 1,
        "pk" : 227,
        "city" : "Dubai"
      },
      {
        "name" : "Academic City",
        "city_id" : 1,
        "pk" : 184,
        "city" : "Dubai"
      },
      {
        "name" : "Al Barari",
        "city_id" : 1,
        "pk" : 185,
        "city" : "Dubai"
      },
      {
        "name" : "Al Barsha 1,2 & 3",
        "city_id" : 1,
        "pk" : 166,
        "city" : "Dubai"
      },

如何从下面的名称中创建一个数组

 ["Abu Hail", "Academic City", "Al Barari", "Al Barsha 1,2 & 3"]

以下是我获得上述响应的代码

func getAreas(){
        let headers: HTTPHeaders = [
            "Authorization": "Token \(token!)",
            "Accept": "application/json"
        ]
        AF.request("\(staging.url)/api/addresses/areas/", method: .get, encoding: URLEncoding(), headers: headers).responseJSON { (response:DataResponse<Any>) in

            switch response.result {

            case let .success(value):

                let json = JSON(value)
                print("Areas Array: \(json)")

标签: iosarraysalamofireswifty-json

解决方案


使用以下方法创建数组:

if let array = array as? [[String : Any]] {
   let namesArray = array.compactMap { $0["name"] } as? [String]
}

推荐阅读