解析 Swift 中 JSON 数组中的有效对象

Parse valid objects from JSON array in Swift

我有一个像这样的可编码结构

struct User: Codable {
    let id: String
    let registrationId: String
    let firstName: String?
    let lastName: String?
}

现在,来自服务器的响应包含这样一个数组

 [
  {
    "id": "1",
    "registrationId": "r1",
    "firstName": "Jon",
    "lastName": "Doe"
  },
  {
    "id": "2",
    "registrationId": null,
    "firstName": null,
    "lastName": null
  },
  {
    "id": "3",
    "registrationId": null,
    "firstName": null,
    "lastName": null
  },
  {
    "id": "4",
    "registrationId": "r4",
    "firstName": "Jon",
    "lastName": "Snow"
  }
]

我想将其解析为 [User],但仅限那些具有有效(非空)registrationId 的用户。我知道如何在 swift 中解析 JSON。但是这里的问题是因为中间的两个无效数据整个响应会运行进入解码错误。但我想将其解析为包含有效对象(在本例中为第一个和最后一个对象)的 [User] 数组。

非常感谢任何提示或帮助。

1- 使 registrationId 成为可选的

 let registrationId: String?

2-

 let res = try JSONDecoder().decode([User].self,from:data)
 let filtered = res.filter { [=11=].registrationId != nil }

毕竟,这个数据必须来自数据库或数组。通过将 id 参数作为主键,将 registrationId 参数作为外键,如果您正在处理 registrationId 参数,则可以生成一个生产序列,或者如果它在数组上,您可以 link为该 registrationId 生成序列的方法。