基于指定的规则对 Json 数据结构进行重构.
npm install json-refactor --save
import refactor from 'json-refactor';
const result = refactor(target, rules, clone);
target
: 待重构的对象rules
: 重构规则clone
: 默认false
, 是否复制原对象. 默认会对原对象进行重构,并返回. 如果为true
, 则会复制原对象并重构后返回,原对象不会被修改.
to key
到 from key
映射.
target
: {a: 1, b: 2}
rules
: {aaa: 'a', bbb: 'b'}
result
: {aaa: 1, bbb: 2}
target
: [{a: 1, b: 2}, {a: 3, b: 4}, {a: 5, b: 6}]
rules
: [{aaa: 'a', bbb: 'b'}]
result
: [{aaa: 1, bbb: 2}, {aaa: 3, bbb: 4}, {aaa: 5, bbb: 6}]
target
: {a: {a: {a: 1}}}
rules
: {aaa: 'a.a.a'}
result
: {aaa: 1}
target
: {a: {a: {a: 1}}}
rules
: {aaa: 'a', _aaa: {aaa: 'a', _aaa: {aaa: 'a'}}}
result
: {aaa: {aaa: {aaa: 1}}}
用 |
连接 from key
与 operator
, 并且可以添加多个操作符.
target
: {a: 1, b: '234', c: '1.22', d: '0.01'}
rules
: {aaa: 'a|bool', bbb: 'b|int', ccc: 'c|float', ddd: 'd|int|bool'}
result
: {aaa: true, bbb: 234, ccc: 1.22, ddd: false}
refactor.set({
keepOnHandling: '_',
operatorDelimiter: '|'
});
-
keepOnHandling
: 创建一个新的键名,并继续对这个键名的值进行重构type
:string
default
:_
-
operatorDelimiter
: 多个操作符的分隔符type
:string
default
:|
// 注册一个操作符
refactor.register(test, handler);
refactor.register({test, handler});
// 注册多个操作符
refactor.register([{test1, handler1}, {test2, handler2}, ...]);
-
test
: 匹配操作符type
:string/RegExp
example
:int
,float
,bool
,string
,/^slice!0!10/
-
handler
: 操作原值,并返回一个新值type
:function
example
:(value, operator) => newValue
parameters
:value, operator
value
: 原值operator
: 匹配到的操作符
获取整数值
获取小数值
获取 bool 值
获取字符串值
获取指定数组中每个对象的某个键对应的值的和
format
: sum!key
target
: {oldKey: [{a: 1, b: 2}, {a: 3, b: 4}, {a: 5, b: 6}]}
rules
: {newKey: 'oldKey|sum!a'}
result
: {newKey: 9}
获取指定数组中每个对象的某个键对应的值的平均数
format
: average!key
target
: {oldKey: [{a: 1, b: 2}, {a: 3, b: 4}, {a: 5, b: 6}]}
rules
: {newKey: 'oldKey|average!a'}
result
: {newKey: 3}