问题描述
成功请求了以下两种形式的数据。
{
"ride_fare": 1000,"km": 7
]
}
{
"ride_fare": 1000,"km": 7,"options": [ 0,1,2]
}
但是,我不知道如何请求像下面这样的二维关联数组。 我如何申请?
{
"ride_fare": 1000,"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 格式。
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)
}
}
}