KeyEncodingStrategy
public enum KeyEncodingStrategy
The strategy to use for automatically changing the value of keys before encoding.
-
Use the keys specified by each type. This is the default strategy.
Declaration
Swift
case useDefaultKeys
-
Convert from “camelCaseKeys” to “snake_case_keys” before writing a key to JSON payload.
Capital characters are determined by testing membership in
CharacterSet.uppercaseLetters
andCharacterSet.lowercaseLetters
(Unicode General Categories Lu and Lt). The conversion to lower case usesLocale.system
, also known as the ICU “root” locale. This means the result is consistent regardless of the current user’s locale and language preferences.Converting from camel case to snake case:
- Splits words at the boundary of lower-case to upper-case
- Inserts
_
between words - Lowercases the entire string
- Preserves starting and ending
_
.
For example,
oneTwoThree
becomesone_two_three
._oneTwoThree_
becomes_one_two_three_
.Note
Using a key encoding strategy has a nominal performance cost, as each string key has to be converted.Declaration
Swift
case convertToSnakeCase
-
Provide a custom conversion to the key in the encoded dictionary from the keys specified by the encoded types. The full path to the current encoding position is provided for context (in case you need to locate this key within the payload). The returned key is used in place of the last component in the coding path before encoding. If the result of the conversion is a duplicate key, then only one value will be present in the result.
Declaration
Swift
case custom((_ codingPath: [CodingKey]) -> CodingKey)