Swift NSDictionary JSON 数组转字符串耗时
Swift NSDictionary JSON Array to String Convert Time consuming
我正在将 NSDictionary 转换为字符串并将其存储在 SQLite 数据库中,然后再次从数据库中检索并将字符串转换为 NSDictionary,方法是使用以下两种方法{在本段下方的代码中提到}。但是,如果我们在一个 SQLite 数据库中存储多个字典,那么将两种方式{数组转换为字符串,反之亦然}会花费很多时间 table。是否有任何解决方案可以在更短的时间内将完整的 NSArray 或完整的 NSDictionary 转换为字符串,反之亦然?
func jsonDictionary(jsonData:NSDictionary)-> String
{
var error : NSError?
let jsonData = try! NSJSONSerialization.dataWithJSONObject(jsonData, options: NSJSONWritingOptions.PrettyPrinted)
let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String
return jsonString
}
func convertStringToDictionary(text: String) -> NSDictionary {
var json=text
json = json.stringByReplacingOccurrencesOfString("\n", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
// json = json.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
print(json)
var jsonDictData=NSDictionary()
if let data = json.dataUsingEncoding(NSUTF8StringEncoding) {
do {
var jsonDict: NSDictionary? = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary
jsonDictData=jsonDict?.mutableCopy()as! NSMutableDictionary
print(jsonDictData)
}
catch
{
}
}
return jsonDictData
}
您不需要将 JSON 数据转换为字符串,而且您当然也不应该处理 JSON 字符串本身。
要将字典保存为 JSON,只需将字典转换为 JSON data 然后保存数据:
let jsonData = try NSJSONSerialization.dataWithJSONObject(yourDictionary, options: [])
// save `jsonData` in your SQL
这里 jsonData
是您的 JSON 数据。这是你需要保存的。没有别的。
您可以将其保存为 SQL table,方法是将其保存为 blob
(一大块数据)而不是字符串。
然后取回:
let jsonData = // get the blob from SQL
if let json = try? NSJSONSerialization.JSONObjectWithData(jsonData, options: []),
let dict = json as? [String: AnyObject]
{
// here `dict` is your dictionary converted from JSON data
}
看到了吗?无需将 JSON 数据与字符串相互转换。
最后的建议:不要使用 NSDictionary 和 NSArray。相反,使用 Swift 数组和 Swift 字典。更简单更安全。
我正在将 NSDictionary 转换为字符串并将其存储在 SQLite 数据库中,然后再次从数据库中检索并将字符串转换为 NSDictionary,方法是使用以下两种方法{在本段下方的代码中提到}。但是,如果我们在一个 SQLite 数据库中存储多个字典,那么将两种方式{数组转换为字符串,反之亦然}会花费很多时间 table。是否有任何解决方案可以在更短的时间内将完整的 NSArray 或完整的 NSDictionary 转换为字符串,反之亦然?
func jsonDictionary(jsonData:NSDictionary)-> String
{
var error : NSError?
let jsonData = try! NSJSONSerialization.dataWithJSONObject(jsonData, options: NSJSONWritingOptions.PrettyPrinted)
let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String
return jsonString
}
func convertStringToDictionary(text: String) -> NSDictionary {
var json=text
json = json.stringByReplacingOccurrencesOfString("\n", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
// json = json.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
print(json)
var jsonDictData=NSDictionary()
if let data = json.dataUsingEncoding(NSUTF8StringEncoding) {
do {
var jsonDict: NSDictionary? = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary
jsonDictData=jsonDict?.mutableCopy()as! NSMutableDictionary
print(jsonDictData)
}
catch
{
}
}
return jsonDictData
}
您不需要将 JSON 数据转换为字符串,而且您当然也不应该处理 JSON 字符串本身。
要将字典保存为 JSON,只需将字典转换为 JSON data 然后保存数据:
let jsonData = try NSJSONSerialization.dataWithJSONObject(yourDictionary, options: [])
// save `jsonData` in your SQL
这里 jsonData
是您的 JSON 数据。这是你需要保存的。没有别的。
您可以将其保存为 SQL table,方法是将其保存为 blob
(一大块数据)而不是字符串。
然后取回:
let jsonData = // get the blob from SQL
if let json = try? NSJSONSerialization.JSONObjectWithData(jsonData, options: []),
let dict = json as? [String: AnyObject]
{
// here `dict` is your dictionary converted from JSON data
}
看到了吗?无需将 JSON 数据与字符串相互转换。
最后的建议:不要使用 NSDictionary 和 NSArray。相反,使用 Swift 数组和 Swift 字典。更简单更安全。