change-object-case
Version:
Change case of object and arrays
79 lines (56 loc) • 2.82 kB
Markdown
A library based on [change-case](https://github.com/blakeembrey/change-case) to change object keys case.
The library reexports all the methods of change-case so that it can be used
as a drop-in replacement.
Each function of change-case has an equivalent with the suffix `Keys`
for object keys and `Array` to map on each object in an array.
So for example, from the function `camel` will be created `camelKeys` and `camelArray`.
You can get the package with npm
```
$ npm install --save change-object-case
```
or with bower
```
$ bower install --save change-object-case
```
```javascript
var changeCase = require('change-object-case');
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}});
// {fooBar: {bar_baz: [{baz_qux: 1}]}}
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}}, {recursive: true});
// {fooBar: {barBaz: [{baz_qux: 1}]}}
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}}, {recursive: true, arrayRecursive: true});
// {fooBar: {barBaz: [{bazQux: 1}]}}
changeCase.camelArray([{foo_bar: 1}, 2]);
// [{fooBar: 1}, 2]
changeCase.snakeKeys({fooBar: 1});
// {foo_bar: 1}
```
If you don't know the type of your data beforehand, there's also methods that will take arbitrary data, e.g.:
```javascript
changeCase.toCamel(['string', 1.2, {foo_bar: {bar_baz: [{baz_qux: 1}]}}], {recursive: true, arrayRecursive: true});
```
By default, recursion is turned off, and you have to explictly pass `{recursive: true}` to get objects processed recursively and `{arrayRecursive: true}` to get arrays transformed.
You can set these values globally by changing `changeCase.options`:
```javascript
var changeCase = require('change-object-case');
changeCase.options = {recursive: true, arrayRecursive: true};
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}});
// {fooBar: {barBaz: [{bazQux: 1}]}}
```
You can pass `{exclude: array[string]}` to exclude keys from the transformation.
When converting case, some keys can possibliy collide.
By default, the key is overriden, but you can choose to raise an error
in such a case by passing: `{throwOnDuplicate: true}`.
```
changeCase.camelKeys({a_b1: 1, a_b_1: 2}, {throwOnDuplicate: true});
// Error: duplicated key aB1
```
See the [change-case](https://github.com/blakeembrey/change-case) documentation
for all the available methods, and suffix with `Keys` or `Array` where you need.
MIT