Como converter uma sequência de datas com segundos fracionários opcionais usando Codable no Swift4

Estou substituindo meu antigo código de análise JSON pelo Swift's Codable e estou tendo um problema. Eu acho que não é tanto uma questão codificável como é uma questão DateFormatter.

Comece com uma estrutura

 struct JustADate: Codable {
    var date: Date
 }

e uma string json

let json = """
  { "date": "2017-06-19T18:43:19Z" }
"""

agora vamos decodificar

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601

let data = json.data(using: .utf8)!
let justADate = try! decoder.decode(JustADate.self, from: data) //all good

Mas se alterarmos a data para que ela tenha segundos fracionários, por exemplo:

let json = """
  { "date": "2017-06-19T18:43:19.532Z" }
"""

Agora quebra. As datas às vezes retornam com segundos fracionários e às vezes não. A maneira que eu costumava resolver isso era no meu código de mapeamento que eu tinha uma função de transformação que tentava os dois dateFormats com e sem os segundos fracionários. No entanto, não tenho muita certeza de como abordá-lo usando o Codable. Alguma sugestão?

questionAnswers(2)

yourAnswerToTheQuestion