我有
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并发送到服务器。
您的自定义对象无法直接转换为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文档。
如果你只是想要一个简单的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标准类型数组,自定义类数组,继承,自定义对象组合。
当数组仅包含JSON可编码值(字符串,数字,字典,数组,nil)时,可以对阵列使用NSJSONSerialization
首先你需要创建JSON对象然后你可以使用它(你的代码崩溃,因为联系人不是一个JSON对象!)
you can refere below link