Обобщая ответ JSON как параметр функции - PullRequest
0 голосов
/ 27 сентября 2018

Сериализация JSON:

var responseDict: [AnyHashable : Any]? = nil
    if let anEncoding = responseString?.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
    responseDict = try! JSONSerialization.jsonObject(with: anEncoding, options: .mutableContainers) as? [String : Any]
}  

Я передаю этот responseDict в этой функции:

func apiClientDidFinishWithResponse(response: [AnyHashable : Any]? {

}  

Теперь только что понял, что responseDict также может быть массивом.Что я должен оставить responseDict как?Any, [AnyHashable : Any], [[AnyHashable : Any]]?

1 Ответ

0 голосов
/ 27 сентября 2018

В следующем коде вы можете увидеть все приложения, которые вы можете встретить при использовании json.

   var responseDict: Any? = nil
    let responseString : String? = "[\"For\", \"BW\", \"Fit\"]"
    if let anEncoding = responseString?.data(using: .utf8) {
        responseDict = try! JSONSerialization.jsonObject(with: anEncoding, options: .mutableContainers) as? Any
    }
   apiClientDidFinishWithResponse(response: responseDict)


  func apiClientDidFinishWithResponse(response: Any?)   {

    switch  response {
    case is [String: Any]:
        print (response) ; //"{\"F\":1, \"B\":12, \"Fi\":11}"
    case is [[String: Any]]:
        print (response); // "[{\"Fd\":1}, {\"BM\":12}, {\"Fi\":11}]"
    case is [Any]:
        print (response) //  "[\"For\", \"BW\", \"Fit\"]"

    default : break;
 }

}
...