簡體   English   中英

我可以在 swift Moya 中請求一個二維關聯數組嗎?

[英]Can I request a two-dimensional associative array in swift Moya?

成功請求了以下兩種形式的數據。

    {
      "ride_fare": 1000,
      "km": 7
      ]
    } 
{
  "ride_fare": 1000,
  "km": 7,
  "options": [ 0, 1, 2]
}

但是,我不知道如何請求像下面這樣的二維關聯數組。 我怎樣才能請求它?

{
  "ride_fare": 1000,
  "km": 7,
  "option_fares": [
    {
      "price": 200,
      "name": "立ち寄り",
      "id": 1
    }
  ]
}

我寫的代碼:

var options = [Any]()
for option in optionFares {
    let params = [
        "id" : option.id ?? 0,
        "name" : option.name ?? "",
        "price" : option.price ?? 0
    ] as [String : Any]
    options.append(params)
}

let faresData = [
    "id" : driverOrder.id ?? 0,
    "km" : driverOrder.distance ?? 0,
    "option_fares" : options,
    "ride_fare" : driverOrder.ride_fare ?? 0
] as [String : Any]

首先, create a struct與您要請求的 json 格式匹配的create a struct

struct Params: Codable {
    let rideFare, km: Int
    let optionFares: [OptionFare]

    enum CodingKeys: String, CodingKey {
        case rideFare = "ride_fare"
        case km
        case optionFares = "option_fares"
    }
}

struct OptionFare: Codable {
    let price: Int
    let name: String
    let id: Int
}

並且必須在 Moya 的任務中創建請求參數。

import Moya

extension APITarget: TargetType {

   var task: Task {
       case .yourCaseName(let price, let name, let id, let rideFare, let km):
            
            let encoder: JSONEncoder = JSONEncoder()
            let optionFareData: [OptionFare] = []
            optionFareData.append(OptionFare(price, name, id))
            let paramsData = Params(rideFare, km, optionFareData)
            let jsonData: Data = try! encoder.encode(paramsData)
            
            return .requestData(jsonData)
        }


   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM