基于指定的规则对 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:stringdefault:_
-
operatorDelimiter: 多个操作符的分隔符type:stringdefault:|
// 注册一个操作符
refactor.register(test, handler);
refactor.register({test, handler});
// 注册多个操作符
refactor.register([{test1, handler1}, {test2, handler2}, ...]);
-
test: 匹配操作符type:string/RegExpexample:int,float,bool,string,/^slice!0!10/
-
handler: 操作原值,并返回一个新值type:functionexample:(value, operator) => newValueparameters:value, operatorvalue: 原值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}