2017-06-22 103 views
0

我試圖得到一個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'

回答

1

你是註釋錯誤的類型,兩個字典都[String:Any]

let ele : [String:Any] = ["tag" : "active", "value" : 1] 
let ele2 : [String: Any] = ["tag" : "active", "value" : 1] 

基本上除非你讓SwiftyJSON做的工作,你不能序列JSON對象與JSONSerialization

附註:不要打印漂亮如果JSON發送到服務器。服務器不關心文本格式。

1

您的字典類型錯誤,應該是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