JSON SwiftyJSON 对象序列化失败
JSON Serialization failing for SwiftyJSON Objects
我正在尝试获得这样的 json 结构:
{
"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)'
你能告诉我问题出在哪里吗?
你注错了类型,两个词典都是[String:Any]
let ele : [String:Any] = ["tag" : "active", "value" : 1]
let ele2 : [String: Any] = ["tag" : "active", "value" : 1]
基本上你不能用 JSONSerialization
序列化 JSON
对象,除非你让 SwiftyJSON
完成这项工作。
旁注:如果 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
我正在尝试获得这样的 json 结构:
{
"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)'
你能告诉我问题出在哪里吗?
你注错了类型,两个词典都是[String:Any]
let ele : [String:Any] = ["tag" : "active", "value" : 1]
let ele2 : [String: Any] = ["tag" : "active", "value" : 1]
基本上你不能用 JSONSerialization
序列化 JSON
对象,除非你让 SwiftyJSON
完成这项工作。
旁注:如果 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