Передача JSON в качестве параметра swift - PullRequest
1 голос
/ 26 июня 2019

Я делаю вызов API, который требует от меня передать JSON в качестве параметра.когда я это делаю, приложение вылетает.Я использую Мойю для своих сетей, поэтому я решил использовать SwiftyJSON, чтобы получить JSON непосредственно к телу, но приложение вылетает, говоря: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (__SwiftValue)

public var task: Task {
        switch self {
        case .postCheckout(let cart): return .requestParameters(parameters: ["cart": cart], encoding: JSONEncoding.default)
        }
    }

моя моя

func postCheckout(cart: JSON) -> Observable<BaseResponseModel> {

        return provider.rx.request(.postCheckout(cart: cart))
            .mapObject(BaseResponseModel.self)
            .asObservable()
    }

, когда янапечатал JSON это то, что печатается

{
  "total" : 6000,
  "subscription" : {
    "id" : 4,
    "quantity" : 3
  },
  "vas" : [
    4,
    6,
    2
  ]
}

1 Ответ

1 голос
/ 26 июня 2019

В общем мы отправляем JSON string не JSON object.Создайте JSON данные и преобразуйте их в строковый объект, используя кодировку utf-8.

Но Moya выполняет это преобразование само по себе, поэтому в ["cart": cart], если вы передаете cart в качестве параметра словаря, это должно работать.

Пример:

 .requestParameters(parameters: ["cart": ["total": 6000, "user": "me"]], encoding: JSONEncoding.default)
...