0

Swift 4 で JSON をデコードする際、デコード時の文字列を大文字に変換したいと考えています。JSONは大文字で保存します

例えば

let title =  "I CANT STAND THE RAIN"
print(title.capitalized)

文字列がモデルに大文字で保存されるように、デコード処理中にこれを行うにはどうすればよいですか?

唯一の注意点は、JSON (タイトル) の残りのプロパティではなく、1 つのプロパティのみを大文字にしたいということです。

struct Book: Decodable {
    let title: String 
    let author: String
    let genre: String

    init(newTitle: String, newAuthor: String, newGenre: String) {
        title = newTitle
        author = newAuthor
        genre = newGenre
    }
}

let book = try! decoder.decode(Book.self, from: jsonData)
4

2 に答える 2

1

構造体に独自のカスタム Decodable 初期化子を提供できます。

struct Book: Decodable {
    let title: String
    let author: String
    let genre: String

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        title = try values.decode(String.self, forKey: .title).capitalized
        author = try values.decode(String.self, forKey: .author)
        genre = try values.decode(String.self, forKey: .genre)
    }

    enum CodingKeys: String, CodingKey {
        case title, author, genre
    }
}
于 2018-09-01T23:37:42.933 に答える
-1
jsonString.replace(/"\s*:\s*"[^"]/g, match => {
  return match.slice(0, -1) + match[match.length - 1].toUpperCase()
})
于 2018-09-01T13:21:45.850 に答える