SBTPostNetWork.swift 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. //
  2. // SBTPostNetWork.swift
  3. // SolarBT
  4. //
  5. // Created by weclouds on 2019/8/9.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import PPNetworkHelper
  10. struct SBTEncoder {
  11. public static func encoder<T>(toString model:T) ->String? where T:Encodable{
  12. let encoder = JSONEncoder()
  13. encoder.outputFormatting = .prettyPrinted
  14. guard let data = try? encoder.encode(model) else { return nil }
  15. guard let jsonStr = String(data: data, encoding: .utf8) else { return nil }
  16. return jsonStr
  17. }
  18. public static func encoder<T>(toDictionary model: T)->[String:Any]? where T:Encodable{
  19. let encoder = JSONEncoder()
  20. guard let data = try? encoder.encode(model) else { return nil }
  21. guard let dict = try? JSONSerialization.jsonObject(with: data, options: .mutableLeaves) else { return nil }
  22. return (dict as! [String : Any])
  23. }
  24. public static func convertStringToDictionary(text: String) -> [String:AnyObject]? {
  25. if let data = text.data(using: String.Encoding.utf8) {
  26. do {
  27. return try JSONSerialization.jsonObject(with: data, options: [JSONSerialization.ReadingOptions.init(rawValue: 0)]) as? [String:AnyObject]
  28. } catch let error as NSError {
  29. print(error)
  30. }
  31. }
  32. return nil
  33. }
  34. public static func convertDictionaryToString(dict:[String:AnyObject]) -> String {
  35. var result:String = ""
  36. do {
  37. //如果设置options为JSONSerialization.WritingOptions.prettyPrinted,则打印格式更好阅读
  38. let jsonData = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions.init(rawValue: 0))
  39. if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {
  40. result = JSONString
  41. }
  42. } catch {
  43. result = ""
  44. }
  45. return result
  46. }
  47. public static func convertArrayToString(arr:[AnyObject]) -> String {
  48. var result:String = ""
  49. do {
  50. let jsonData = try JSONSerialization.data(withJSONObject: arr, options: JSONSerialization.WritingOptions.init(rawValue: 0))
  51. if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {
  52. result = JSONString
  53. }
  54. } catch {
  55. result = ""
  56. }
  57. return result
  58. }
  59. }
  60. extension Dictionary where Key: ExpressibleByStringLiteral, Value:AnyObject {
  61. var jsonString:String {
  62. do {
  63. let stringData = try JSONSerialization.data(withJSONObject: self as NSDictionary, options: JSONSerialization.WritingOptions.prettyPrinted)
  64. if let string = String(data: stringData, encoding: String.Encoding.utf8){
  65. return string
  66. }
  67. } catch _ {
  68. }
  69. return ""
  70. }
  71. }
  72. struct Device_Super : Codable {
  73. var deviceList:[Device_Post]!
  74. }
  75. struct Device_Post : Codable {
  76. var type: String!//设备类型
  77. var number : String! //设备序列号
  78. var name : String! //设备名称
  79. var model : String?//设备型号
  80. var hardwareVersion: String?//硬件版本
  81. var softwareVarsion : String? //软件版本
  82. var productionDate : String?//生产日期
  83. var macAddress :String?//mac地址
  84. var productionBatch :String? //生产批次
  85. }
  86. class SBTPostNetWork: NSObject {
  87. override init() {
  88. super.init()
  89. }
  90. func postDeviceInfo(_ paramters :Data) {
  91. // let jsonstring = SBTEncoder.encoder(toDictionary: model)
  92. // log.debug("jsonstring ---\(jsonstring)")
  93. SBTHttpTool.shareInstance.startUpload("http://www.solar-bt.com/api/app/save", parmeters: paramters, successHandler: { (respondObject) in
  94. log.debug("d返回的的数据---\(respondObject)")
  95. let json = SBTEncoder.convertStringToDictionary(text: respondObject)
  96. let msg = json!["msg"] as! String
  97. log.debug("\n--- 请求结果 -- \(msg)")
  98. }) { (error) in
  99. log.debug("错误信息 ---\(error)")
  100. }
  101. }
  102. //模型转字典
  103. }