util.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package request_util
  2. import (
  3. "encoding/json"
  4. "git.sxidc.com/go-tools/utils/slice"
  5. )
  6. func StructToMap(originStruct any) map[string]any {
  7. jsonBytes, err := json.Marshal(originStruct)
  8. if err != nil {
  9. panic(err)
  10. }
  11. retMap := make(map[string]any)
  12. err = json.Unmarshal(jsonBytes, &retMap)
  13. if err != nil {
  14. panic(err)
  15. }
  16. return retMap
  17. }
  18. func ExtractDynamicValueMap(inputModelMap map[string]any, inputParamStruct any) (map[string]any, error) {
  19. jsonBytes, err := json.Marshal(inputParamStruct)
  20. if err != nil {
  21. return nil, err
  22. }
  23. paramMap := make(map[string]any)
  24. err = json.Unmarshal(jsonBytes, &paramMap)
  25. if err != nil {
  26. return nil, err
  27. }
  28. allValues := make([]string, 0)
  29. paramValues := make([]string, 0)
  30. for k := range inputModelMap {
  31. allValues = append(allValues, k)
  32. }
  33. for k := range paramMap {
  34. paramValues = append(paramValues, k)
  35. }
  36. extraKeys := slice.ExtractASubBSetValue(allValues, paramValues)
  37. dynamicValueMap := make(map[string]any)
  38. for _, key := range extraKeys {
  39. if inputModelAny, ok := inputModelMap[key]; ok {
  40. dynamicValueMap[key] = inputModelAny
  41. }
  42. }
  43. return dynamicValueMap, nil
  44. }