Недавно я столкнулся с проблемой при кодировании объекта, который соответствует протоколу Codable.
Вот код для игровой площадки:
class Person: Codable {
var name: String?
var age: Int?
var isDev: Bool?
}
let p1 = Person()
p1.name = "John N."
p1.age = 13
p1.isDev = false
let p2 = Person()
p2.name = "Jack"
p2.age = 19
p2.isDev = true
let people = [p1, p2]
let data = try JSONEncoder().encode(people)
let j = try! JSONSerialization.jsonObject(with: data, options: [])
print(j)
Это вывод, который я получаю в консоли Playground:
Как видите, закодированное имя p1 заключено в кавычки, а имя p2 — нет. Итак, мой вопрос: почему?
P.S. Единственное, что я заметил, это добавление, например. символ пробела или подчеркивания в любом месте при установке строкового значения добавляет кавычки в json. p1.name содержит пробел, поэтому он закодирован правильно.
Любые мысли приветствуются.