0

最近、Codable プロトコルに準拠するエンティティのエンコード中に問題に直面しました。

Playground のコードは次のとおりです。

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 にはありません。だから私の質問はなぜですか?

PS私が気付いた唯一のことは、文字列値を設定するときにスペース記号やアンダースコアなどをどこかに追加すると、jsonに引用符が追加されることです。p1.name にはスペースが含まれているため、正しくエンコードされています。

どんな考えでも大歓迎です。

4

2 に答える 2