在Swift中过滤API响应中的空值是一个常见的需求,尤其是在处理JSON数据时。空值可能以nil
、空字符串、零值或其他形式出现。以下是一些基础概念和相关方法来解决这个问题。
Optional
类型表示一个值可能存在也可能不存在。它用?
或!
来声明。??
):用于在可选值为nil
时提供一个默认值。假设我们有一个API响应,返回一个包含用户信息的JSON数组。我们需要过滤掉其中的空值。
import Foundation
struct User: Codable {
let id: Int
let name: String?
let email: String?
let age: Int?
}
let jsonString = """
[
{"id": 1, "name": "Alice", "email": "alice@example.com", "age": 30},
{"id": 2, "name": "", "email": null, "age": null},
{"id": 3, "name": "Bob", "email": "bob@example.com", "age": 25}
]
"""
do {
let jsonData = jsonString.data(using: .utf8)!
let decoder = JSONDecoder()
let users = try decoder.decode([User].self, from: jsonData)
let filteredUsers = users.filter { user in
guard let name = user.name, !name.isEmpty else { return false }
guard let email = user.email, !email.isEmpty else { return false }
guard let age = user.age, age > 0 else { return false }
return true
}
print(filteredUsers)
} catch {
print("Failed to decode JSON: \(error)")
}
User
结构体遵循Codable
协议,用于解码JSON数据。JSONDecoder
将JSON字符串解码为User
对象数组。filter
方法和guard
语句检查每个用户的name
、email
和age
是否有效。无效的值将被过滤掉。如果在过滤过程中遇到问题,可以采取以下步骤进行调试:
通过这些方法,可以有效地过滤掉API响应中的空值,确保数据的完整性和有效性。
没有搜到相关的文章