1

私のjsonの日付パラメータは空にすることができます("")。JSONDecoder でそれを処理するには?

カスタムの dateDecodingStrategy は、異なる形式のみを処理できますが、空の値を処理することはできません (フォーマッターが返す日付はオプションにすることはできません)。

日付に値がある場合、完全に機能します。しかし、日付が "" の場合、クラッシュします。

decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
        let container = try decoder.singleValueContainer()
        let dateStr = try container.decode(String.self)

        let formatter = DateFormatter()
        formatter.calendar = Calendar(identifier: .iso8601)
        formatter.locale = Locale(identifier: "en_US_POSIX")
        formatter.timeZone = TimeZone(secondsFromGMT: 0)
        formatter.dateFormat = "yyyy"
        if let date = formatter.date(from: dateStr) {
            return date
        }
        formatter.dateFormat = "yyyy-MM-dd"
        if let date = formatter.date(from: dateStr) {
            return date
        }
        throw DateError.invalidDate
    })
4

1 に答える 1