Issue #865
We can define some typealias
and build extensions on JSONDictionary to easily extract values
typealias JSONDictionary = [String: Any]
typealias JSONArray = [JSONDictionary]
extension JSONDictionary {
func dict(_ key: String) -> JSONDictionary? {
self[key] as? JSONDictionary
}
func array(_ key: String) -> JSONArray? {
self[key] as? JSONArray
}
func value<T>(_ key: String, as: T.Type) -> T? {
self[key] as? T
}
}
let responseJson = try JSONSerialization.jsonObject(with: data, options: [])
guard
let responseJson = responseJson as? JSONDictionary,
let uiAmount = responseJson
.dict("result")?
.array("value")?
.first?
.dict("account")?
.dict("data")?
.dict("parsed")?
.dict("info")?
.dict("tokenAmount")?
.value("uiAmount", as: Double.self)
else { return 0 }