将 JSON 作为参数传递 swift

Posted

技术标签:

【中文标题】将 JSON 作为参数传递 swift【英文标题】:Passing JSON as a parameter swift 【发布时间】:2019-06-26 12:15:49 【问题描述】:

我正在进行 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
  ]

【问题讨论】:

发送 json 字符串而不是 json 对象。制作json数据并使用utf-8编码转换成字符串对象。 我这样做了,但它需要 JSON 我对 Moya 不熟悉,但一般我们发送 json 字符串。因为原始请求不理解本地语言对象。 ["cart": cart] 如果您将cart 作为字典参数传递,那么它应该可以工作。示例:.requestParameters(parameters: ["cart": ["total": 6000, "user": "me"]], encoding: JSONEncoding.default) 有效的将其添加为答案 【参考方案1】:

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

但是Moya 自己进行这种转换,所以在["cart": cart] 中,如果您将购物车作为字典参数传递,那么它应该可以工作。

示例:

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

【讨论】:

以上是关于将 JSON 作为参数传递 swift的主要内容,如果未能解决你的问题,请参考以下文章

Swift:错误将 self 作为 inout 参数传递

Swift:如何选择性地将函数作为参数传递并调用函数?

Swift:我可以将 UIView 作为我可以创建/修改的参数传递吗?

将json参数发布到api使用post方法Swift 3

如何通过 Post 方法使用 JSON 模型将 JSON 字典作为参数传递?

如何将 JSON 数组作为 URL 中的参数传递