NSInvalidArgumentException - “JSON写入中的顶级类型无效” - Swift

时间:2016-12-01 13:00:33

标签: swift nsjsonserialization toplevel invalidargumentexception

正如帖子标题中所提到的,当我尝试在swift中将Dictionary转换为JSON数据时,我得到NSInvalidArgumentException - “JSON写入中的顶级类型无效”

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
        }

    }

我将Dictionary作为参数传递,但没有弄错。请帮帮我们。

谢谢!

1 个答案:

答案 0 :(得分:2)

请注意,您不需要所有这些内容,您的功能可以像以下一样简单:

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
}