SwiftHttp + JSON解码器

Posted

技术标签:

【中文标题】SwiftHttp + JSON解码器【英文标题】:SwiftHttp + JSONDecoder 【发布时间】:2018-07-02 08:18:55 【问题描述】:

我正在尝试从这样的服务器解析 json 响应

HTTP.GET(ServerPatientApi.SPLASH, parameters: nil)  response in
            if let error = response.error 
                listener.onException(error)
                return;
            

            DispatchQueue.main.async (execute: 
                let res = try decoder.decode(PatientSplashModel.self, from: response.data)
                listener.onSplashLoaded()
            )
        

但我收到以下错误:

从 '() throws -> ()' 类型的抛出函数到非抛出函数类型 '@convention(block) 的无效转换

在街区:

DispatchQueue.main.async (execute: 
                let res = try decoder.decode(PatientSplashModel.self, from: response.data)
                listener.onSplashLoaded()
            )

我认为引起的错误是:

PatientSplashModel.self

如何解决这个问题?

谢谢

【问题讨论】:

显示 json 响应和 PatientSplashModel 模型 请添加 JSON 示例和模型信息。 json 没问题。因为我正在为 android 使用相同的 API。错误发生在 json 之前 - 编译状态 【参考方案1】:

该错误有点误导,您必须将try 语句包装在do catch 块中

DispatchQueue.main.async 
    do 
        let res = try decoder.decode(PatientSplashModel.self, from: response.data)
        listener.onSplashLoaded()
     catch  print(error) 
 

【讨论】:

现在我收到以下错误:在闭包中隐式使用“自我”;使用“自我”。使捕获语义明确 在闭包中隐式使用'self';使用“自我”。使捕获语义显式通过将更改解码器添加到 self.decoder 来修复错误

以上是关于SwiftHttp + JSON解码器的主要内容,如果未能解决你的问题,请参考以下文章

JSON解码器无法将对象解码为对象

JSON解码器Swift 4.0

如何使用 JSON 输入字符串从编排中调用 JSON 解码器?

Python 标准库之 json 编码和解码器『详解』

Python 标准库之 json 编码和解码器『详解』

Swift 4 - Json 解码器