Skip to content

Convert your json/dict keys recursively or strings to camelCase or snakeCase

License

Notifications You must be signed in to change notification settings

dternyak/animal_case

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Animal case convert recursively your dict/json keys to camelCase or snakeCase.

Based on https://github.com/rafa-acioly/animal_case

Most commonly used to build proxies when we need to create communication between apis that have different syntaxes on their endpoint.

Imagine that you have to make a get request on some endpoint and send a post request to another endpoint with some mutate data comming from the first request but each of there endpoints have differents json key sintaxies, now you have to convert all the keys recursively and the hell begins...fear no more my friend.

Release

python setup.py sdist
twine upload dist/*

Tests

source venv/bin/activate # assumes you have a virtualenv `venv` installed with required packages
pytest tests

Usage:

Converting dict keys recursively

By default parse_keys convert keys to snake_case

from animal_case.convert import parse_keys

my_dict = {
    "firstKey": "first value",
    "secondKey": "second value",
    "thirdKey": [
        {"subThirdKey": 1},
        {"subThirdKey2": 2},
        {"subThirdKey3": [
                {"superDeep": "wow"}
            ]
        }
    ]
}

converted = parse_keys(my_dict)
# output
'''
{
    "first_key": "first value",
    "second_key": "second value",
    "third_key": [
        {"sub_third_key": 1},
        {"sub_third_key2": 2},
        {"sub_third_key3": [
                {"super_deep": "wow"}
            ]
        }
    ]
}
'''
from animal_case.convert import parse_keys

my_dict = {
    "first_key": "first value",
    "second_key": "second value",
    "third_key": [
        {"sub_third_key": 1},
        {"sub_third_key2": 2},
        {"sub_third_key3": [
                {"super_deep": "wow"}
            ]
        }
    ]
}

converted = parse_keys(my_dict, type='camel')
# output
'''
{
    "firstKey": "first value",
    "secondKey": "second value",
    "thirdKey": [
        {"subThirdKey": 1},
        {"subThirdKey2": 2},
        {"subThirdKey3": [
                {"superDeep": "wow"}
            ]
        }
    ]
}
'''

snake case

from animal_case.convert import to_snake_case

converted = to_snake_case('myRandomString')
print(converted) # output: my_random_string

camel case

from animal_case.convert import to_camel_case

converted = to_camel_case('my_random_string')
print(converted) # output: myRandomString

preserve regex

If you'd like to keep some keys from being converted, you can pass preserve_regex to any of the methods. For example, if you wanted to preserve CONSTANT_CASE, you would do

from animal_case.convert import to_snake_case

converted = to_snake_case('CONSTANT_CASE', preserve_regex="^[A-Z0-9_]+$")
print(converted # output: CONSTANT_CASE

About

Convert your json/dict keys recursively or strings to camelCase or snakeCase

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%