Enumeration Case 列挙ケース

JSONDecoder.KeyDecodingStrategy.convertFromSnakeCase

A key decoding strategy that converts snake-case keys to camel-case keys. スネークケースのキーをキャメルケースのキーに変換するキーデコーディング戦略。

Declaration 宣言

case convertFromSnakeCase

Discussion 議論

Snake-case and camel-case are two common approaches for combining words when naming parts of an API. The Swift API Design Guidelines recommend using camel-case names. Some JSON APIs adopt snake-case; use this strategy when you encounter such an API. スネークケースとキャメルケースは、APIの部品に名前を付ける場合に単語を結合するための2つの一般的な取り組み方です。Swift API Design Guidelinesは、キャメルケース名を使うことを推奨します。いくつかのJSON APIはスネークケースを採用します;あなたがそのようなAPIに出くわす場合はこの戦略を使ってください。

This strategy uses uppercaseLetters and lowercaseLetters to determine the boundaries between words, and the system locale when capitalizing letters. この戦略は、単語間の境界を決めるのにuppercaseLetterslowercaseLettersを、そして大文字化の時にsystemロケールを使います。

This strategy follows these steps to convert JSON keys to camel-case: この戦略は、これらの段階に従ってJSONキーをキャメルケースに変換します:

  1. Capitalize each word that follows an underscore. アンダースコアに続く各単語を頭文字化します。

  2. Remove all underscores that aren’t at the very start or end of the string. 文字列のほんとうの始まりまたは終わりのアンダースコア全てを除去します。

  3. Combine the words into a single string. 単語を単一の文字列へと結合します。

The following examples show the result of applying this strategy: 以下の例は、この戦略を適用する結果を示します:

fee_fi_fo_fum

Converts to: feeFiFoFum 次に変換:feeFiFoFum

feeFiFoFum

Converts to: feeFiFoFum 次に変換:feeFiFoFum

base_uri

Converts to: baseUri 次に変換:baseUri

The example below shows how properties on the OlympicEventResult structure convert from snake-case when decoded as keys in a JSON object. 下の例は、どのようにOlympicEventResult構造体上のプロパティが、JSONオブジェクトの中のキーとしてデコードされる時に、スネークケースから切り換わるかを示します。


struct OlympicEventResult: Codable {
    var goldWinner: String
    var silverWinner: String
    var bronzeWinner: String
}


let json = """
{
    "silver_winner": "Sound",
    "gold_winner": "Light",
    "bronze_winner": "Unladen Swallow"
}
""".data(using: .utf8)!


let decoder = JSONDecoder()
let decodeAndPrint = { print(try! decoder.decode(OlympicEventResult.self, from: json)) }


decoder.keyDecodingStrategy = .convertFromSnakeCase
decodeAndPrint()


// Prints: "OlympicEventResult(goldWinner: "Light", silverWinner: "Sound", bronzeWinner: "Unladen Swallow")"

See Also 参照

Built-in Decoding 組み込みデコーディング

Related Documentation 関連文書