package request_util import ( "encoding/json" "git.sxidc.com/go-tools/utils/slice" ) func StructToMap(originStruct any) map[string]any { jsonBytes, err := json.Marshal(originStruct) if err != nil { panic(err) } retMap := make(map[string]any) err = json.Unmarshal(jsonBytes, &retMap) if err != nil { panic(err) } return retMap } func ExtractDynamicValueMap(inputModelMap map[string]any, inputParamStruct any) (map[string]any, error) { jsonBytes, err := json.Marshal(inputParamStruct) if err != nil { return nil, err } paramMap := make(map[string]any) err = json.Unmarshal(jsonBytes, ¶mMap) if err != nil { return nil, err } allValues := make([]string, 0) paramValues := make([]string, 0) for k := range inputModelMap { allValues = append(allValues, k) } for k := range paramMap { paramValues = append(paramValues, k) } extraKeys := slice.ExtractASubBSetValue(allValues, paramValues) dynamicValueMap := make(map[string]any) for _, key := range extraKeys { if inputModelAny, ok := inputModelMap[key]; ok { dynamicValueMap[key] = inputModelAny } } return dynamicValueMap, nil }