我有
var contacts : [ContactsModel] = []
和
class ContactsModel: NSObject
{
var contactEmail : String?
var contactName : String?
var contactNumber : String?
var recordId : Int32?
var modifiedDate : String?
}
现在在联系人中我有6个值,如
现在我想将联系人转换为JSON我怎么样?
我试过
var jsonData: NSData?
do
{
jsonData = try NSJSONSerialization.dataWithJSONObject(contacts, options:NSJSONWritingOptions.PrettyPrinted)
} catch
{
jsonData = nil
}
let jsonDataLength = "\(jsonData!.length)"
但它崩溃了应用程序。
我的问题是手动转换为字典一个接一个非常耗时,6000条记录需要超过5分钟,所以我不想直接将模型转换为JSON并发送到服务器。
答案 0 :(得分:3)
如果你只是想要一个简单的Swift对象到JSON静态函数而没有任何继承或直接依赖于NSObject或NS类型。退房:
https://github.com/peheje/JsonSerializerSwift
完全免责声明。我做到了。简单使用:
//Arrange your model classes
class Object {
var id: Int = 182371823
}
class Animal: Object {
var weight: Double = 2.5
var age: Int = 2
var name: String? = "An animal"
}
class Cat: Animal {
var fur: Bool = true
}
let m = Cat()
//Act
let json = JSONSerializer.toJson(m)
目前支持标准类型,可选标准类型,数组,nullables标准类型数组,自定义类数组,继承,自定义对象组合。
答案 1 :(得分:2)
您的自定义对象无法直接转换为JSON
。 NSJSONSerialization Class Reference说:
可以转换为JSON的对象必须具有以下属性:
顶级对象是NSArray或NSDictionary。
所有对象都是NSString,NSNumber,NSArray,NSDictionary或NSNull的实例。
所有字典键都是NSString的实例。
数字不是NaN或无穷大。
您可以手动将对象转换为Dictionary
或使用某些库,例如SwiftyJSON,JSONModel或Mantle。
编辑:目前,使用swift 4.0+,您可以使用Codable
协议轻松将对象转换为JSON。这是一个原生解决方案,不需要第三方库。请参阅Apple的Using JSON with Custom Types文档。
答案 2 :(得分:0)
当数组只包含JSON可编码值(字符串,数字,字典,数组,零)时,可以对阵列使用NSJSONSerialization
首先你需要创建JSON对象然后你可以使用它(你的代码崩溃了,因为联系人不是JSON对象!)
<强> you can refere below link
强>