增加数据类型转换

This commit is contained in:
2024-04-08 17:31:18 +08:00
parent bd2957255f
commit 231d2539e1
4 changed files with 138 additions and 1 deletions

View File

@@ -109,6 +109,7 @@ func (t *Transform) rewrite(rule *define.FilterRule) error {
if strings.Contains(rule.SourceDataPath, "[]") {
return t.rewriteForSlice(rule)
}
// 走的默认值认为无需脱敏
if t.result, err = sjson.Set(t.result, rule.TargetDataPath, rule.DefaultValue); nil != err {
return err
}
@@ -121,6 +122,9 @@ func (t *Transform) rewrite(rule *define.FilterRule) error {
if realValue, err = data_mask.ExecuteWithError(realValue, rule.DataMaskStrategy); nil != err {
return err
}
// 一旦执行数据脱敏, 统一以字符串输出
t.result, err = sjson.Set(t.result, rule.TargetDataPath, realValue)
return err
}
// TODO : 格式转换
t.result, err = sjson.Set(t.result, rule.TargetDataPath, sourceResult.Value())
@@ -133,11 +137,17 @@ func (t *Transform) rewrite(rule *define.FilterRule) error {
//
// Date : 15:22 2024/3/27
func (t *Transform) rewriteForSlice(rule *define.FilterRule) error {
var (
err error
)
pathArr := strings.Split(rule.SourceDataPath, ".[].")
sliceUnfoldResult := t.unfoldSourceSliceData(t.sourceData, pathArr[0:len(pathArr)-1], nil)
targetArr := strings.Split(rule.TargetDataPath, ".[].")
for idx, itemRes := range sliceUnfoldResult {
t.result, _ = sjson.Set(t.result, fmt.Sprintf("%v.%v.%v", targetArr[0], idx, targetArr[1]), itemRes.Get(pathArr[len(pathArr)-1]).Value())
if t.result, err = sjson.Set(t.result, fmt.Sprintf("%v.%v.%v", targetArr[0], idx, targetArr[1]), itemRes.Get(pathArr[len(pathArr)-1]).Value()); nil != err {
return err
}
}
return nil
}