【问题标题】:Invalid type in JSON write (__SwiftValue)JSON 写入中的类型无效 (__SwiftValue)
【发布时间】:2019-10-26 14:03:20
【问题描述】:

我正在尝试将参数 [String:Any] 值传递给 JSONSerialization.data 并且每次都抛出错误。

我知道 [String:Any] 字典的值是 Swifty.JSON 对象。但我无法将它们转换为 NSDictionary 对象。

我像这样从另一个字典中填充参数:

var params = [String:Any]()
for (key, value) in self.myDictionary[self.selectedEntry] as! JSON {
    print("\(key) - \(value.description)")
    params[key]=value     
}

这就是 print(params) 之后 params 对象内部的内容。

["searchOptions": {
  "omit_saved_records" : false
}, "customFilters": {
  "is_next_sellers_search" : "Y"
}, "use_code_std": [
  "RSFR",
  "RCON"
]]

我将参数传递给这个函数:

let json = try JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)

这是发生错误的地方。

我希望这能简单地工作,但我得到了这个错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入中的类型无效 (__SwiftValue)”

我在这里做错了什么?

【问题讨论】:

  • 有什么理由不能使用 Codable?

标签: ios json swift swift4 swifty-json


【解决方案1】:

SwiftyJSONJSON类型是自定义类型,不能序列化。

只需从JSON 对象中获取dictionaryObject

if let params = self.myDictionary[self.selectedEntry].dictionaryObject {

不要prettyPrint。服务器不在乎

let json = try JSONSerialization.data(withJSONObject: params)

注意:我们鼓励您放弃SwiftyJSON,转而使用Codable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 2021-08-08
    • 2015-03-19
    • 2016-03-16
    • 2021-12-26
    • 2017-07-05
    • 2017-03-05
    • 2017-01-24
    相关资源
    最近更新 更多