Arrays Swift NSDictionary JSON数组到字符串转换耗时
我正在将NSDictionary转换为字符串,并将其存储在SQLite数据库中,然后再次使用以下两种方法从数据库中检索并将字符串转换为NSDictionary{在本段下面的代码中提到}。但是,如果我们在一个SQLite数据库表中存储多个字典,那么将{array-to-string}转换为两种方式需要花费大量时间。是否有任何解决方案可以在更短的时间内将完整NSArray或完整NSDictionary转换为字符串,反之亦然Arrays Swift NSDictionary JSON数组到字符串转换耗时,arrays,json,swift,nsdictionary,nsjsonserialization,Arrays,Json,Swift,Nsdictionary,Nsjsonserialization,我正在将NSDictionary转换为字符串,并将其存储在SQLite数据库中,然后再次使用以下两种方法从数据库中检索并将字符串转换为NSDictionary{在本段下面的代码中提到}。但是,如果我们在一个SQLite数据库表中存储多个字典,那么将{array-to-string}转换为两种方式需要花费大量时间。是否有任何解决方案可以在更短的时间内将完整NSArray或完整NSDictionary转换为字符串,反之亦然 func jsonDictionary(jsonData:NSDic
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数据,然后保存数据:
let jsonData = try NSJSONSerialization.dataWithJSONObject(yourDictionary, options: [])
// save `jsonData` in your SQL
这里jsonData
是您的JSON数据。这就是你需要保存的东西。没有别的了
通过将其保存为blob
(一块数据)而不是字符串,可以将其保存到SQL表中
然后,要将其取回:
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数据转换为字符串或从字符串转换为JSON数据
最后建议:不要使用NSDictionary和NSArray。相反,使用Swift数组和Swift字典。它更简单、更安全。您不需要将JSON数据转换为字符串,当然也不应该处理JSON字符串本身 要将字典保存为JSON,只需将字典转换为JSON数据,然后保存数据:
let jsonData = try NSJSONSerialization.dataWithJSONObject(yourDictionary, options: [])
// save `jsonData` in your SQL
这里jsonData
是您的JSON数据。这就是你需要保存的东西。没有别的了
通过将其保存为blob
(一块数据)而不是字符串,可以将其保存到SQL表中
然后,要将其取回:
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数据转换为字符串或从字符串转换为JSON数据
最后建议:不要使用NSDictionary和NSArray。相反,使用Swift数组和Swift字典。它更简单、更安全。
.stringbyreplaceingoccurrencesofstring(“\n”…
你为什么要这样做?哦,对了,你正在使用。PrettyPrinted
…那么不要使用它!传递空选项而不是。PrettyPrinted
//另外,你可以将JSON数据保存为blob,而不是转换为字符串或从字符串转换。谢谢Eric!我被迫使用“.stringbyreplacingoccurrencesofstring…”因为我在从NSDictionary转换为String时得到“\n…”。我也不知道您所说的“数据作为blob而不是转换为String/从String”是什么意思你认为你是被迫这么做的,但你错了。以正确的方式编码和解码,你永远不必这么做//我说的是保存JSON数据,而不是保存它的字符串表示形式。Eric,我将每个NSDictionary存储在SQLite数据库的每一行中。但在存储时,我必须将NSDictionary转换为字符串以插入到e数据库。因为SQLite数据库只接受字符串值,所以我正在将JSON数据转换为字符串。我的问题是,我有大量数据,并且被迫将每个NSDictionary或NSArray作为字符串存储在单个数据库表的每一行中。请注意,我不是swift方面的专家,但需要大量数据来管理,因为SQLite数据库只接受s字符串值
不可以。您也可以存储数据。//我已经给出了一个答案来解释我在说什么。.stringByReplacingOccurrencesOfString(“\n”…
你为什么要这样做?哦,对了,你正在使用。PrettyPrinted
…那么不要使用它!传递空选项而不是。PrettyPrinted
//另外,你可以将JSON数据保存为blob,而不是转换为字符串或从字符串转换。谢谢Eric!我被迫使用“.stringbyreplacingoccurrencesofstring…”因为我在从NSDictionary转换为String时得到“\n…”。我也不知道您所说的“数据作为blob而不是转换为String/从String”是什么意思你认为你是被迫这么做的,但你错了。以正确的方式编码和解码,你永远不必这么做//我说的是保存JSON数据,而不是保存它的字符串表示形式。Eric,我将每个NSDictionary存储在SQLite数据库的每一行中。但在存储时,我必须将NSDictionary转换为字符串以插入到e数据库。因为SQLite数据库只接受字符串值,所以我正在将JSON数据转换为字符串。我的问题是,我有大量数据,并且被迫将每个NSDictionary或NSArray作为字符串存储在单个数据库表的每一行中。请注意,我不是swift方面的专家,但需要大量数据来管理,因为SQLite数据库只接受s字符串值
不可以。你也可以存储数据。//我已经回答了,解释了我在说什么。