Swift中字典与JSON转换的方法
Swift中经常会遇到字典和字符串的相互转换,因此可以转换可以封装起来,转换代码如下:
funcconvertStringToDictionary(text:String)->[String:AnyObject]?{
ifletdata=text.data(using:String.Encoding.utf8){
do{
returntryJSONSerialization.jsonObject(with:data,options:[JSONSerialization.ReadingOptions.init(rawValue:0)])as?[String:AnyObject]
}catchleterrorasNSError{
print(error)
}
}
returnnil
}
funcconvertDictionaryToString(dict:[String:AnyObject])->String{
varresult:String=""
do{
//如果设置options为JSONSerialization.WritingOptions.prettyPrinted,则打印格式更好阅读
letjsonData=tryJSONSerialization.data(withJSONObject:dict,options:JSONSerialization.WritingOptions.init(rawValue:0))
ifletJSONString=String(data:jsonData,encoding:String.Encoding.utf8){
result=JSONString
}
}catch{
result=""
}
returnresult
}
funcconvertArrayToString(arr:[AnyObject])->String{
varresult:String=""
do{
letjsonData=tryJSONSerialization.data(withJSONObject:arr,options:JSONSerialization.WritingOptions.init(rawValue:0))
ifletJSONString=String(data:jsonData,encoding:String.Encoding.utf8){
result=JSONString
}
}catch{
result=""
}
returnresult
}
实际测试:
letjsonText:String="{\"order_info\":[{\"order_id\":\"1479828084819597144\",\"channel\":\"ios\",\"product_id\":\"02\"},{\"order_id\":\"1479828084819597144\",\"channel\":\"ios\",\"product_id\":\"02\"}]}"
letdict=self.convertStringToDictionary(text:jsonText)
print("字符串转换之后的字典:\(dict!)")
vardictionaryOrArray:[String:AnyObject]=[:]
dictionaryOrArray["a\"b"]="cd"asAnyObject?
dictionaryOrArray["strings"]=["string","another"]asAnyObject?
dictionaryOrArray["keywdict"]=["anotherKey":100,"Key2":"Val2"]asAnyObject?
dictionaryOrArray["numbers"]=[1,2,3]asAnyObject?
dictionaryOrArray["bools"]=[true,false]asAnyObject?
letconvertResult:String=self.convertDictionaryToString(dict:dictionaryOrArray)
print("字典转换之后的字符串:\(convertResult)")
letarray:[String]=["FlyElephant","keso"]
print("数组转换之后的数组:\(self.convertArrayToString(arr:arrayas[AnyObject]))")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。