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