Enumeration Case 列挙ケース

JSONEncoder.KeyEncodingStrategy.convertToSnakeCase

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

Declaration 宣言

case convertToSnakeCase

Discussion 議論

Camel-case and snake-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 converting uppercase letters to lowercase letters. この戦略は、単語間の境界を決めるのにuppercaseLetterslowercaseLettersを、そしてアッパーケースをローワケース表音文字に変換している時にsystemロケールを使います。

This strategy follows these steps to convert key names to snake-case: この戦略は、以下の3つの段階に従ってキー名をスネークケースに変換します:

  1. Split the name into words, preserving leading or trailing underscores. 名前を単語へと分割します、先導するまたは後続するアンダースコアを保全します。

  2. Insert an underscore between each word. 1つのアンダースコアを各単語の間に挿入します。

  3. Convert the resulting string to lowercase. 結果文字列をローワケースに変換します。

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

feeFiFoFum

Converts to: fee_fi_fo_fum 次に変換: fee_fi_fo_fum

fee_fi_fo_fum

Converts to: fee_fi_fo_fum 次に変換: fee_fi_fo_fum

xmlContents

Converts to: xml_contents 次に変換: xml_contents

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


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


let marathonResult = OlympicEventResult(goldWinner: "Light", silverWinner: "Sound", bronzeWinner: "Unladen Swallow")


let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let encodeAndPrint = { print(String(data: try! encoder.encode(marathonResult), encoding: .utf8)!) }


encoder.keyEncodingStrategy = .convertToSnakeCase
encodeAndPrint()


/* Prints:
{
  "bronze_winner" : "Unladen Swallow",
  "gold_winner" : "Light",
  "silver_winner" : "Sound"
}
*/

See Also 参照

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

Related Documentation 関連文書