2

我正在尝试在 swift 4 中使用 Codable 解析 JSON。我担心的是

public class entStatusAndDescription : NSObject {
     var status :  Int?
     var statusDescription : String?
     var records : AnyObject?
}

我希望上述实体是可编码的,但“记录”不能是特定实体,因为这是我将从 API 接收的基本实体。在我解析了 status 和 statusDescription 之后,我才能指定将记录哪个实体

例如,我正在调用 API 以获取客户详细信息,我收到状态为 200 即成功,然后我会将记录解析为客户实体

4

2 回答 2

3

如果一个类的所有成员都是可编码的,那么它就是可编码的。当您使用 Generic 成员时,您必须确保该成员是 Codable。在这种情况下,您可以创建记录成员为任意的对象,而不是从 Codable 继承的记录。

这对我有用:

public class entStatusAndDescription<T: Codable>: Codable {
     var status :  Int?
     var statusDescription : String?
     var records : T?
}
于 2018-08-14T19:42:51.593 回答
0

使用良好的旧 JSONSerialization 解决:

let data = "[{\"key\": \"value\"}]".data(using: .utf8)
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
if let json = json as? [String: Any] {
  // parse as needed, a value can be of type Any.
}
于 2020-09-23T13:19:40.303 回答