// // SBTPostNetWork.swift // SolarBT // // Created by weclouds on 2019/8/9. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import PPNetworkHelper struct SBTEncoder { public static func encoder(toString model:T) ->String? where T:Encodable{ let encoder = JSONEncoder() encoder.outputFormatting = .prettyPrinted guard let data = try? encoder.encode(model) else { return nil } guard let jsonStr = String(data: data, encoding: .utf8) else { return nil } return jsonStr } public static func encoder(toDictionary model: T)->[String:Any]? where T:Encodable{ let encoder = JSONEncoder() guard let data = try? encoder.encode(model) else { return nil } guard let dict = try? JSONSerialization.jsonObject(with: data, options: .mutableLeaves) else { return nil } return (dict as! [String : Any]) } public static 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 } public static 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 } public static 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 } } extension Dictionary where Key: ExpressibleByStringLiteral, Value:AnyObject { var jsonString:String { do { let stringData = try JSONSerialization.data(withJSONObject: self as NSDictionary, options: JSONSerialization.WritingOptions.prettyPrinted) if let string = String(data: stringData, encoding: String.Encoding.utf8){ return string } } catch _ { } return "" } } struct Device_Super : Codable { var deviceList:[Device_Post]! } struct Device_Post : Codable { var type: String!//设备类型 var number : String! //设备序列号 var name : String! //设备名称 var model : String?//设备型号 var hardwareVersion: String?//硬件版本 var softwareVarsion : String? //软件版本 var productionDate : String?//生产日期 var macAddress :String?//mac地址 var productionBatch :String? //生产批次 } class SBTPostNetWork: NSObject { override init() { super.init() } func postDeviceInfo(_ paramters :Data) { // let jsonstring = SBTEncoder.encoder(toDictionary: model) // log.debug("jsonstring ---\(jsonstring)") SBTHttpTool.shareInstance.startUpload("http://www.solar-bt.com/api/app/save", parmeters: paramters, successHandler: { (respondObject) in log.debug("d返回的的数据---\(respondObject)") let json = SBTEncoder.convertStringToDictionary(text: respondObject) let msg = json!["msg"] as! String log.debug("\n--- 请求结果 -- \(msg)") }) { (error) in log.debug("错误信息 ---\(error)") } } //模型转字典 }