繁体   English   中英

将swift3列表转换为json

[英]Convert swift3 list to json

我正在寻找一种转换Swift3列表的方法

var myList = [MyObject]();

到json。

我用了:

let jsonData = try JSONSerialization.data(withJSONObject: myList, options: JSONSerialization.WritingOptions()) as NSData

该应用程序崩溃了。

您可以序列化一个Array / List,问题是自定义MyObject ,您必须首先将其映射到Dictionary。

我将使用.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"]
}

然后再次调用map,现在从DictionaryMyObject

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

  return obj
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM