将 swift3 列表转换为 json
Convert swift3 list to json
我正在寻找一种转换 Swift3 列表的方法
var myList = [MyObject]();
到json。
我用过:
let jsonData = try JSONSerialization.data(withJSONObject: myList, options: JSONSerialization.WritingOptions()) as NSData
应用程序崩溃。
您可以序列化数组/列表,问题是自定义 MyObject
,您必须先将其映射到字典。
我会使用 .map
方法:
var myList = [MyObject]() // myList contains MyObject's
let jsonArray = myList.map { obj in
return obj.serialize()
}
比 MyObject
添加一个序列化函数,像这样:
public func serialize() -> Dictionary<String, Any> {
var dict = Dictionary<String, Any>()
// now place all your public vars in the dictionary
dict["id"] = self.id
dict["name"] = self.name
dict["title"] = self.title
return dict
}
现在,如果你想反序列化,只需创建另一个方法:
public func deserialize(source: Dictionary<String, Any>) {
// You might need some type conversion
self.id = source["id"]
self.name = source["name"]
self.title = source["title"]
}
然后再次调用地图,现在从 Dictionary
到 MyObject
:
var jsonArray = [Dictionary<String, Any>]() // jsonArray contains dictionaries
let myList = jsonArray.map { dict in
let obj = MyObject()
obj.deserialize(source: dict)
return obj
}
我正在寻找一种转换 Swift3 列表的方法
var myList = [MyObject]();
到json。
我用过:
let jsonData = try JSONSerialization.data(withJSONObject: myList, options: JSONSerialization.WritingOptions()) as NSData
应用程序崩溃。
您可以序列化数组/列表,问题是自定义 MyObject
,您必须先将其映射到字典。
我会使用 .map
方法:
var myList = [MyObject]() // myList contains MyObject's
let jsonArray = myList.map { obj in
return obj.serialize()
}
比 MyObject
添加一个序列化函数,像这样:
public func serialize() -> Dictionary<String, Any> {
var dict = Dictionary<String, Any>()
// now place all your public vars in the dictionary
dict["id"] = self.id
dict["name"] = self.name
dict["title"] = self.title
return dict
}
现在,如果你想反序列化,只需创建另一个方法:
public func deserialize(source: Dictionary<String, Any>) {
// You might need some type conversion
self.id = source["id"]
self.name = source["name"]
self.title = source["title"]
}
然后再次调用地图,现在从 Dictionary
到 MyObject
:
var jsonArray = [Dictionary<String, Any>]() // jsonArray contains dictionaries
let myList = jsonArray.map { dict in
let obj = MyObject()
obj.deserialize(source: dict)
return obj
}