Converting object keys to camelCase. Works on deeply nested objects/arrays. Handy for converting underscore keys to camelCase. Using lodash keeps the code small and light at around 10 lines.
$ npm i --save lodash-humps
Remove any hyphens, underscores, whitespace characters, and uppercases the first character that follows. Returns a new object. See _.camelCase()
https://lodash.com/docs#camelCase and https://en.wikipedia.org/wiki/CamelCase.
import humps from 'lodash-humps'
const object = { attr_one: 'foo', attr_two: 'bar', attr_three: { attr_one: 'foo' } }
humps(object) // { attrOne: 'foo', attrTwo: 'bar', attrThree: { attrOne: 'foo' } }
Arrays of objects are also converted:
const array = [{ attr_one: 'foo' }, { attr_one: 'bar' }]
humps(array) // [{ attrOne: 'foo' }, { attrOne: 'bar' }]
What if you want to convert it back?!? See test/createHumps.spec.js for an example. Open an issue if you want a proper export.
import createHumps from 'humps/lib/createHumps'
import { snakeCase } from 'lodash'
const snakes = createHumps(snakeCase)
const object = { attrOne: 'foo', attrTwo: 'bar', attrThree: { attrOne: 'foo' } }
snakes(object) // { attr_one: 'foo', attr_two: 'bar', attr_three: { attr_one: 'foo' } }
NOTE: Version 3.x will only work with objects created by the Object constructor. You may need to do something like const result = humps({ ...SomeOtherClass })
to get humps to process your stuff. Function properties are now kept and not converted to {}
. Some might say this is a bug and others might call it a feature. Full version bump so you can have your pick.
Internally switched from using _.isObject
to _.isPlainObject
before converting the keys and children objects.