Swift中字典与JSON转换的方法

Swift中经常会遇到字典和字符串的相互转换,因此可以转换可以封装起来,转换代码如下:

func convertStringToDictionary(text: String) -> [String:AnyObject]? {

if let data = text.data(using: String.Encoding.utf8) {

do {

return try JSONSerialization.jsonObject(with: data, options: [JSONSerialization.ReadingOptions.init(rawValue: 0)]) as? [String:AnyObject]

} catch let error as NSError {

print(error)

}

}

return nil

}

func convertDictionaryToString(dict:[String:AnyObject]) -> String {

var result:String = ""

do {

//如果设置options为JSONSerialization.WritingOptions.prettyPrinted,则打印格式更好阅读

let jsonData = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions.init(rawValue: 0))

if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {

result = JSONString

}

} catch {

result = ""

}

return result

}

func convertArrayToString(arr:[AnyObject]) -> String {

var result:String = ""

do {

let jsonData = try JSONSerialization.data(withJSONObject: arr, options: JSONSerialization.WritingOptions.init(rawValue: 0))

if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {

result = JSONString

}

} catch {

result = ""

}

return result

}

实际测试:

 

let jsonText:String = "{\"order_info\":[{\"order_id\":\"1479828084819597144\",\"channel\":\"ios\",\"product_id\":\"02\"},{\"order_id\":\"1479828084819597144\",\"channel\":\"ios\",\"product_id\":\"02\"}]}"

let dict = self.convertStringToDictionary(text: jsonText)

print("字符串转换之后的字典:\(dict!)")

var dictionaryOrArray : [String: AnyObject] = [:]

dictionaryOrArray["a\"b"] = "cd" as AnyObject?

dictionaryOrArray["strings"] = ["string", "another"] as AnyObject?

dictionaryOrArray["keywdict"] = [ "anotherKey": 100, "Key2": "Val2"] as AnyObject?

dictionaryOrArray["numbers"] = [ 1, 2, 3] as AnyObject?

dictionaryOrArray["bools"] = [ true, false] as AnyObject?

let convertResult:String = self.convertDictionaryToString(dict: dictionaryOrArray)

print("字典转换之后的字符串:\(convertResult)")

let array:[String] = ["FlyElephant","keso"]

print("数组转换之后的数组:\(self.convertArrayToString(arr: array as [AnyObject]))")

以上是 Swift中字典与JSON转换的方法 的全部内容, 来源链接: utcz.com/z/348415.html

回到顶部