我有要解析的JSON数据:
{
"data": {
"user_name": "JohP llDoe",
"email_address": "[email protected]"
},
"result": {
"code": 0
}
}
数据类型从Web服务更改为另一个,但一般结构始终相同。
因此,我使用EVReflection创建此通用类来解析数据:
class MyResponse<T>: EVObject {
var data : T?
var result : Result?
}
class Result: EVObject {
var message : String = ""
var code : Int = 0
}
对于数据:
class Preaccount : EVObject {
public var user_name : String = ""
public var email_address : String = ""
}
并调用Web服务,我创建了此方法:
Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers)
.responseObject { (response: DataResponse<MyResponse<Preaccount>>) in
if response.result.isSuccess {
print(response.result.value!)
}
if response.result.isFailure {
let error : Error = response.result.error!
}
}
现在我访问不畅:
有没有一种方法可以创建通用方法并在参数中传递解析后的模型。
我建议Decodable
改用:
struct MyResponse<T: Decodable>: Decodable {
let data: T?
let result: Result?
}
struct Result: Decodable {
var message: String?
var code: Int
}
struct Preaccount: Decodable {
let user_name: String
let email_address: String
}
let data = """
{
"data": {
"user_name": "JohP llDoe",
"email_address": "[email protected]"
},
"result": {
"code": 0
}
}
""".data(using: .utf8)!
let result = try? JSONDecoder().decode(MyResponse<Preaccount>.self, from: data)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句