dic转data swift_swift data转dic - CSDN
  • 这是Dictionary转Data 的方法 源码: func jsonToData(jsonDic:Dictionary<String, Any>) -> Data? { if (!JSONSerialization.isValidJSONObject(jsonDic)) { print("is not a valid json object") ....

    这是Dictionary转Data 的方法

    源码:

    func jsonToData(jsonDic:Dictionary<String, Any>) -> Data? {
    
        if (!JSONSerialization.isValidJSONObject(jsonDic)) {
    
            print("is not a valid json object")
    
            return nil
    
    }
    
        //利用自带的json库转换成Data
    
        //如果设置options为JSONSerialization.WritingOptions.prettyPrinted,则打印格式更好阅读
    
        let data = try? JSONSerialization.data(withJSONObject: jsonDic, options: [])
    
        //Data转换成String打印输出
    
        let str = String(data:data!, encoding: String.Encoding.utf8)
    
        //输出json字符串
    
        print("Json Str:\(str!)")
    
        return data
    
    }
    
    复制代码

    这是Data转Dictionary, 上面是首先判断能否转换成功,下面用的do catch。

    源码:

    func dataToDictionary(data:Data) ->Dictionary<String, Any>?{
    
        do{
    
            let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
    
            let dic = json as! Dictionary<String, Any>
    
            return dic
    
        }catch _ {
    
            print("失败")
    
            return nil
    
        }
    
    }
    复制代码

    首先因为是自己写的Demo,所以先定义Dictionary,转为Data,然后再转成Dictionary。 定义好你需要的变量,也就是成员,然后将解析出来的Dictionary的key定义为一个数组(例子中就是我定义的Dictionary的key,实际项目中就是你得到的返回值对应的key),再将你与之相对应的变量定义为一个数组,顺序要对应上。然后遍历数组并赋值

    Model源码:

    class testModel:NSObject{
    
        var name:String!
    
        var age:String!
    
        var sex:String!
    
        convenience init(dic:Dictionary<String, Any>){
    
            self.init()    
    
            let arr1 = ["姓名","年龄","性别"]
    
            let arr2 = ["name","age","sex"]
    
            for (index, value) in arr1.enumerated() {
    
                self.setValue(dic[value], forKey: arr2[index])
    
            }
    
        }
    
    }
    
    复制代码

    处理这些之后调用就很简单了,传入Dictionary就搞定了所有的赋值。这样子的Model同样适用于第三方库解析出来的数据,例如SwiftJSON,区别只是传入的字典类型改为JSON。

      let dic = dataToDictionary(data:data)
      let model = testModel.init(dic: dic!)
    复制代码
    展开全文
  • swift JSON和字典互

    2018-07-18 17:45:19
    开发中,很多需要JSON和字典互,只是提供方法,实用,简单明了! /// 模型JSON /// /// - Returns: JSON字符串 fileprivate func modelToJson() -&gt; String { var modelDic = [String : String]() ...

    开发中,很多需要JSON和字典互转,只是提供方法,实用,简单明了!

    /// 模型转JSON
      ///
      /// - Returns: JSON字符串
      fileprivate func modelToJson() -> String {
        var modelDic = [String : String]()
        modelDic["1"] = sid
        modelDic["2"] = stoken
        modelDic["3"] = uid
        modelDic["4"] = username
        do {
          let jsonData = try JSONSerialization.data(withJSONObject: modelDic, options: [])
          return String(data: jsonData, encoding: .utf8) ?? ""
        } catch { }
        return ""
      }
    
    
      /// JSON转模型
      ///
      /// - Returns: Account
      func jsonToModel() -> Account {
        let jsonStr = Defaults[.account]
        let strData = jsonStr.data(using: .utf8)
        do {
          let account = Account()
          if let jsonDic = try JSONSerialization.jsonObject(with: strData ?? Data(), options: []) as? [String:String] {
            account.sid = jsonDic["1"] ?? ""
            account.stoken = jsonDic["2"] ?? ""
            account.uid = jsonDic["3"] ?? ""
            account.username = jsonDic["4"] ?? ""
            return account
          }
        } catch { }
        return Account()
      }

     

    展开全文
  • 1、NSDictionaryNSData let data:NSData = NSKeyedArchiver.archivedData(withRootObject: dataDic) as NSData

    1、NSDictionary转NSData
    let data:NSData =NSKeyedArchiver.archivedData(withRootObject:dataDic) asNSData
    
    2、NSData转NSDictionary
    let dic =NSKeyedUnarchiver.unarchiveObject(with: dataas! Data)as! NSDictionary
    
    
    3、NSDictionary转Data
    let date =try! JSONSerialization.data(withJSONObject: dic, options: .prettyPrinted)
    
    4、Data转Dictionary
    let json =try! JSONSerialization.jsonObject(with: data, options: .mutableContainers)as! Dictionary<String,String>
    





    展开全文
  • 1、NSDictionaryNSData var dictionaryExample : [String:AnyObject] = ["user":"UserName", "pass":"password", "token":"0123456789", "image":0] let dataExample :

    使用NSKeyedUnarchiver类来进行相互转换

    1、NSDictionary转NSData


    1. var dictionaryExample : [String:AnyObject] = ["user":"UserName", "pass":"password", "token":"0123456789", "image":0]   
    2. let dataExample : NSData = NSKeyedArchiver.archivedDataWithRootObject(dictionaryExample)  


    2、NSData转NSDictionary


    1. let dictionary:NSDictionary = NSKeyedUnarchiver.unarchiveObjectWithData(dataExample)! as NSDictionary 
    展开全文
  • 本篇介绍数据模型Codable的使用,Codable是苹果自带的基于KVC编码的数据转换模型的协议。 先创建对应的model let dic = ["name":"wall" , "age":"22" , "h":...
  • 写在前面的话现在很多iOS项目的开发开始转向Swift语言。 相信 Swift语言很快会成为iOS工程师 必备技能。 字典模型, 模型转转字典在开发过程中扮演非常重要的角色。 今天就和大家分享一下使用Swift,如何进行字典...
  • 如题。我要Swift语言写的!不要object-c!求大神!![图片说明](https://img-ask.csdn.net/upload/201603/12/1457768148_588685.png) 为什么我这么写返回的是nil!??!??!?
  • https://www.cnblogs.com/yajunLi/p/6549859.html 直接上代码吧 1、JSONString转换为字典 /// JSONString转换为字典 /// /// - Parameter jsonString: ... func getDictionaryFromJ
  • swift (runtime)自定义类转化成字典,Data,JSON字符串实现部分 class ObjectPrint: NSObject { class func getJSON(obj:AnyObject,options:JSONSerialization.WritingOptions)->Data{ var data = Data() do{
  • 背景 JSON是移动端开发常用的应用层数据交换协议。最常见的场景便是,客户端向服务端发起网络请求,服务端返回JSON文本,然后客户端解析这个JSON文本,再把对应数据展现到页面上。 但在编程的时候,处理JSON是...
  • Swift Realm-数据迁移

    2017-03-22 13:14:57
    Realm Swift 当前这个翻译,主要是方便我自己查阅api,有很多地方写的比较晦涩或者没有翻译,敬请谅解  version 0.98.7  官方文档  参考文献 Realm支持类型 String,NSString  Int  Int8,Int16,Int...
  • Json的解码与编码操作,这里使用swift自带的类JSONDecoder 和 JSONEncoder 1、基础处理 如果你的 JSON 数据结构和你使用的 Model 对象结构一致的话,那么解析过程将会非常简单 2、自定义键值名 默认情形下 Keys ...
  • NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];//同步发送request,成功后会得到服务器返回的数据  //返回的数据 根据系统的不同会返回不同编码...
  • //数组JSON func arrayToJson(_ arr...
  • // Swift3.0将Foundation中的NS前缀去掉 func parseJSONData() { // 1.config对象 let sessionConfig: URLSessionConfiguration = URLSessionConfiguration.default // 自定义设置属性 // 指定客户端
  • 在OC中,以及Swift4.0之前,系统一直没有一套数据解析的方法。在Swift4.0后,终于推出了Codable协议,可实现json数据和数据模型的相互转换。 首先来下 Codable ,它其实是一个组合协议,有 Decodable 和 Encodable ...
  • 定义全局数组 var dataArray:NSArray = [] 在调用赋值时dataArray = (dic!["data"])! as! NSArray 为什么不对呢??
  • Swift写服务端 — Perfect框架学习(一)一、Perfect简介Perfect是一组完整、强大的工具箱、软件框架体系和Web应用服务器,可以在Linux、iOS和macOS (OS X)上使用。该软件体系为Swift工程师量身定制了一整套用于...
  • MJExtension(JSON到数据模型的自动转换) 整理自:http://www.jianshu.com/p/93c242452b9b。 转载自https://www.cnblogs.com/huoran1120/p/5470480.html ...1.MJExtension的功能 ...模型数组-...
  • 1.创建一个数据库的工具类 import UIKit import FMDB class XBDataManger: NSObject { //单例 static let shareInstance : XBDataManger = XBDataManger() //创建一个队列(线程安全的队列) ...
1 2 3 4 5 ... 20
收藏数 659
精华内容 263
热门标签
关键字:

dic转data swift