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 字典。更简单更安全。