NSInvalidArgumentException - 'Недопустимый тип верхнего уровня в записи JSON' - Swift

Как упоминалось в заголовке сообщения, я получаю NSInvalidArgumentException - "Недопустимый тип верхнего уровня при записи JSON" при попытке преобразовать словарь в данные JSON в swift

let userInfo: [String: String] = [
            "user_name" : username!,
            "password" : password!,
            "device_id" : DEVICE_ID!,
            "os_version" : OS_VERSION
        ]

let inputData = jsonEncode(object: userInfo)

,,,

static private func jsonEncode(object:Any?) -> Data?
    {
        do{
            if let encoded = try JSONSerialization.data(withJSONObject: object, options:[]) as Data?  <- here occured NSInvalidArgumentException

            if(encoded != nil)
            {
                return encoded
            }
            else
            {
                return nil
            }
        }
        catch
        {
            return nil
        }

    }

Я передаю словарь в качестве параметра, не понимаю, что происходит не так. Пожалуйста, помогите мне, ребята.

Спасибо!

1 ответ

Решение

Обратите внимание, что вам не нужны все эти вещи, ваша функция может быть такой простой, как:

func jsonEncode(object: Any) -> Data? {
    return try? JSONSerialization.data(withJSONObject: object, options:[])
}

Если вам действительно нужно передать Optional, то вам нужно развернуть его:

func jsonEncode(object: Any?) -> Data? {
    if let object = object {
        return try? JSONSerialization.data(withJSONObject: object, options:[])
    }
    return nil
}
Другие вопросы по тегам