快速传递JSON作为参数

时间:2019-06-26 12:15:49

标签: swift rx-swift swifty-json moya

我正在进行api调用,要求我将JSON作为参数传递。当我这样做时,它会使应用程序崩溃。我正在使用Moya进行网络连接,因此我决定使用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 个答案:

答案 0 :(得分:1)

通常,我们发送JSON string而不是JSON object。制作JSON数据,并使用utf-8编码将其转换为字符串对象。

但是Moya本身会执行此转换,因此在["cart": cart]中,如果您将cart作为字典参数传递,那么它应该可以工作。

示例:

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