Swift 将JSON作为参数传递

Swift 将JSON作为参数传递,swift,rx-swift,swifty-json,moya,Swift,Rx Swift,Swifty Json,Moya,我正在进行一个api调用,它要求我将JSON作为参数传递。当我这样做时,它会使应用程序崩溃。我将Moya用于我的网络,因此我决定使用SwiftyJSON将JSON直接发送到正文,但应用程序崩溃,因为出现未捕获的异常“NSInvalidArgumentException”,原因是:“JSON写入中的类型无效(\uu SwiftValue) 我的莫亚 func postCheckout(cart: JSON) -> Observable<BaseResponseModel> {

我正在进行一个api调用,它要求我将JSON作为参数传递。当我这样做时,它会使应用程序崩溃。我将Moya用于我的网络,因此我决定使用SwiftyJSON将JSON直接发送到正文,但应用程序崩溃,因为出现未捕获的异常“NSInvalidArgumentException”,原因是:“JSON写入中的类型无效(\uu SwiftValue)

我的莫亚

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

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

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

但是
Moya
自己进行转换,所以在
[“cart”:cart]
中,如果您将cart作为dictionary参数传递,那么它应该可以工作

示例:

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

发送json字符串而不是json对象。制作json数据并使用
utf-8
编码将其转换为字符串对象。我这样做了,但它需要一个JSONI。我不熟悉Moya,但通常我们发送json字符串。因为原始请求不理解本地语言对象。
[“cart”:cart]
如果您将
cart
作为字典参数传递,那么它应该可以工作。示例:
.requestParameters(参数:[“购物车”:[“总计”:6000,“用户”:“我”]],编码:JSONEncoding.default)
有效,将其添加为答案
{
  "total" : 6000,
  "subscription" : {
    "id" : 4,
    "quantity" : 3
  },
  "vas" : [
    4,
    6,
    2
  ]
}
 .requestParameters(parameters: ["cart": ["total": 6000, "user": "me"]], encoding: JSONEncoding.default)