将 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"]
}

然后再次调用地图,现在从 DictionaryMyObject:

var jsonArray = [Dictionary<String, Any>]() // jsonArray contains dictionaries
let myList = jsonArray.map { dict in
  let obj = MyObject()
  obj.deserialize(source: dict)

  return obj
}