【发布时间】:2015-04-26 01:22:30
【问题描述】:
所以,我已经阅读了大量关于这个主题的材料已经好几天了。除了少数问题,我已经解决了大部分问题。这些是: 1)如何将自定义类的字典序列化为JSON,(考虑到每个类都是可序列化的) 2)如何将包含字典的JSON反序列化为实际的字典,前提是UserObject单独可以序列化。
对于序列化,我使用这个协议: https://gist.github.com/anaimi/ad336b44d718430195f8#file-serializable-swift
为了反序列化,我只是从 json 中提取值。它适用于所有原语和自定义类型,但我不知道如何反序列化自定义类型的集合。
例如,这是我的序列化代码:
@objc var jsonProperties:Array<String> {
get {
return ["id","login","password","name","picture","reputation","description","gender","x","y","visibility","friendRequests","friendWeightings","interestWeightings"]
}
}
@objc func valueForKey(key: String!) -> AnyObject! {
if key == "id" {
return self.id
} else if key == "login" {
return self.login
} else if key == "password" {
return self.password
} else if key == "name" {
return self.name
}
}
等等……
这就是我反序列化同一个对象的方式: 初始化() {}
init(json: JSON) {
if let i = json["id"].string {
self.id = i
}
if let l = json["login"].string {
self.login = l
}
if let f: Array<String> = json["someArray"].arrayObject as? [String] {
self.friendRequests = f
}
if let f = json["someDictionary"].dictionaryObject as? Dictionary<String,Float> {
self.friendWeightings = f
}
}
当我尝试序列化或反序列化该类的集合(如数组或字典)时会出现问题
以前有人遇到过这个问题吗?
另外,我认为 Serializable 协议不能正确地序列化 NON-Primitive 类型的字典。我还没研究呢。
无论如何,重点是: 是否有一个不错的库,它对我发送的任何数据进行所有序列化/反序列化,或者如果没有这样的东西,将自定义类型的集合序列化/反序列化为 json 的方法是什么。
谢谢。
【问题讨论】:
-
除了上述之外,还有人使用github.com/icanzilb/JSONModel 和 swift 吗?自定义对象的集合等情况如何?
标签: ios json swift serialization deserialization