Неверный тип в записи JSON (__SwiftValue) - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь передать значение Parameters [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     
}

И это то, что находится внутри объекта 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)» *

Что я здесь не так делаю?

1 Ответ

2 голосов
/ 12 июня 2019

JSON тип SwiftyJSON является пользовательским типом и не может быть сериализован.

Просто получите dictionaryObject от JSON объекта

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

И дона't prettyPrint.Серверу все равно

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

Примечание. Рекомендуется сбросить SwiftyJSON в пользу Codable.

...