import Foundation
func toJson(obj : Any) -> String?{
do {
let aa = toObj(obj:obj)
let jsonData = try JSONSerialization.data(withJSONObject: aa, options: [])
let jsonString = String.init(data: jsonData, encoding: .utf8)
return jsonString
} catch {
print(error)
return nil
}
}
func toObj(obj : Any) -> Any{
if let a = obj as? [Any] {
var a2 = [Any]()
for e in a {
let d = toObj(obj: e)
a2.append(d)
}
return a2
}else if obj is Int || obj is String || obj is Bool || obj is Float || obj is Double || obj is NSNull {
return obj
} else {
let dic = toDictionary(obj: obj);
if dic.count > 0 {
return dic
}else {////optional none
return obj
}
}
}
func toDictionary(obj : Any) -> [String: Any] {
var dictionary = [String: Any]()
let otherSelf = Mirror(reflecting: obj)
for child in otherSelf.children {
guard let key = child.label else { continue }
let v = child.value
dictionary[key] = toObj(obj:v)
}
return dictionary
}
extension Dictionary {
func floatValue(_ name:Dictionary.Key) ->Float?{
var ret : Float? = nil
if let n = self[name] as? NSNumber {
ret = n.floatValue
}else if let f = self[name] as? Float {
ret = f
}
return ret
}
}