JSON序列化失败为SwiftyJSON对象
问题描述:
我试图得到一个JSON结构是这样的:JSON序列化失败为SwiftyJSON对象
{
"settings": [
{"value": 1, "tag": "active"},
{"value": 1, "tag": "active"}
]
}
我设置了SwiftyJSON操场和写了如下测试:
let ele : [String:JSON] = ["tag" : "active", "value" : 1]
let ele2 : [String:JSON] = ["tag" : "active", "value" : 1]
let eleJSONArray = [ele, ele2]
let parameters : [String:Any] = JSON(["settings":eleJSONArray]).dictionaryObject!
print(parameters)
try JSONSerialization.data(withJSONObject: parameters, options: JSONSerialization.WritingOptions.prettyPrinted)
但我得到一个序列化错误,好像其中一个元素无效:
["settings": [["value": 1, "tag": active], ["value": 1, "tag": active]]]
2017-06-22 15:37:59.078 TestPlayground[57075:19147452] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (_SwiftValue)'
你能指点我在哪里问题我S'
答
你是注释错误的类型,两个字典都[String:Any]
let ele : [String:Any] = ["tag" : "active", "value" : 1]
let ele2 : [String: Any] = ["tag" : "active", "value" : 1]
基本上除非你让SwiftyJSON
做的工作,你不能序列JSON
对象与JSONSerialization
。
附注:不要打印漂亮如果JSON发送到服务器。服务器不关心文本格式。
答
您的字典类型错误,应该是Any
而不是JSON
,因为值为Any
而不是JSON。
正确的语法将为您的字典[String:Any]
。
let ele : [String:Any] = ["tag" : "active", "value" : 1]
let ele2 : [String:Any] = ["tag" : "active", "value" : 1]
现在你应该可以通过让你的价值观:
let tag = ele["tag"] // active