代码之家  ›  专栏  ›  技术社区  ›  Nitish

将JSON响应泛化为函数参数

  •  1
  • Nitish  · 技术社区  · 7 年前

    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]
    }  
    

    我在这个函数中传递这个响应指令:

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

    也可以是数组。我应该保留什么 响应指令 Any , [AnyHashable : Any] , [[AnyHashable : Any]] ?

    1 回复  |  直到 7 年前
        1
  •  0
  •   E.Coms    7 年前

    在下面的代码中,您可以看到使用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;
     }
    
    }