diff --git a/json_tool/filter.go b/json_tool/filter.go index 0bdc292..b418b8c 100644 --- a/json_tool/filter.go +++ b/json_tool/filter.go @@ -58,9 +58,8 @@ func (f *Filter) Result() (*DynamicJSON, error) { // 为数组的处理 pathArr := strings.Split(extraDataPath, ".[].") val := gjson.Get(source, pathArr[0]) - isComplexType := val.IsArray() || val.IsObject() if len(pathArr) == 1 { - result.SetValue(newDataPath, val.Value(), isComplexType) + f.SetValue(result, newDataPath, val.Value(), false, 0) continue } // 支持list再抽取一层,处于性能考虑,这么限制,不做递归无限深度处理 @@ -79,6 +78,18 @@ func (f *Filter) Result() (*DynamicJSON, error) { return result, nil } +// SetValue 设置值 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 12:14 下午 2021/9/10 +func (f *Filter) SetValue(result *DynamicJSON, path string, val interface{}, isSetSlice bool, sliceIndex int) { + if !isSetSlice { + result.SetValue(path, val, false) + return + } +} + // isLegalData 判断是否能转换成json结构, 只有slice/map/struct/能转换成slice或map的[]byte是合法的 // // Author : go_developer@163.com<白茶清欢>