Я вижу, что вы отредактировали свой вопрос из оригинала, поэтому трудно правильно определить в данный момент времени, в чем проблема.
Однако , Codable - это прекрасно, и одним из простых способов для вас является создание вашего объекта понемногу. Не требуется, чтобы объект идентично представлял ваш JSON IF , который вы делаете необязательным. Поэтому при отладке такого рода проблем сделайте разные свойства необязательными и посмотрите, что было проанализировано. Это позволит вам постепенно определять, где вы делаете что-то не так, не вызывая сбоев и сохраняя правильно отформатированные части.
Кроме того, профессиональный совет: если вы планируете сохранить этот код для чего-то большего, чем 1 неделю, прекратите использовать принудительную распаковку !
и привыкните к правильной обработке опций. В противном случае эту привычку трудно прекратить, и другие будут ненавидеть созданный вами код;)