正如帖子标题中所提到的,当我尝试在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作为参数传递,但没有弄错。请帮帮我们。
谢谢!
答案 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
}