у меня есть это тело для отправки в бэкэнд `{
"cart":
{
"products": [
{
"id": 3,
"quantity": 2
},
{
"id": 6,
"quantity": 1
}
],
"card":
{
"id": "card_21378921w"
}
}
}`
Я пытаюсь создать кодируемый объект:
struct Cart: Codable {
var id: Int!
var quantity: Int!
private enum CodingKeys: String, CodingKey {
case id = "id"
case quantity = "quantity"
}
}
var cart: [Cart]!
Затем попробуйте создать словарь в виде строки, любой, но когда я пытаюсь использовать
попробовать! JSONSerialization.data (withJSONObject: параметры, параметры: .prettyPrinted)
я не могу создать правильный файл json для отправки на сервер и сервер возвращает код состояния 422
Как я могу это исправить? Я новичок в использовании swift 4 и codables
Функция
static func createCheckout(accessToken: String, buildingId: Int,products:[Cart], card_id: String,completion: @escaping (CommonResponse?, _ error: Int?) -> ()) {
let url = Url.createCheckout(buildingId: buildingId)
let parameters = Params.createCheckout(products: products, card_id: card_id)
if (!JSONSerialization.isValidJSONObject(parameters)) {
print(parameters)
print("is not a valid json object")
return
}
let encodedParameters = try! JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
request.httpBody = encodedParameters
Alamofire.request(request).responseDecodableObject(decoder: JSONDecoder()) { (response: DataResponse<CommonResponse>) in
let repo = response.result.value
let error = response.response?.statusCode
completion(repo, error)
}
Params
static func createCheckout(products:[Cart], card_id: String) -> Dictionary<String, Any> {
let products: [String: Any] = ["products": products]
let card_number: [String: Any] = ["id": card_id]
return ["cart" : products, "card": card_number]
}