controls.go 820 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package controls
  2. import (
  3. "encoding/json"
  4. "git.sxidc.com/go-tools/utils/strutils"
  5. )
  6. func ExtractInfo[T any](infoStr string) (*T, error) {
  7. info := new(T)
  8. if strutils.IsStringEmpty(infoStr) {
  9. return info, nil
  10. }
  11. err := json.Unmarshal([]byte(infoStr), info)
  12. if err != nil {
  13. return nil, err
  14. }
  15. return info, nil
  16. }
  17. func ExtractInfoFormInfos[T any](infosStr string) (*T, error) {
  18. infos, err := ExtractInfos[T](infosStr)
  19. if err != nil {
  20. return nil, err
  21. }
  22. if infos == nil || len(infos) == 0 {
  23. var info T
  24. return &info, nil
  25. }
  26. return &infos[0], nil
  27. }
  28. func ExtractInfos[T any](infosStr string) ([]T, error) {
  29. infos := make([]T, 0)
  30. if strutils.IsStringEmpty(infosStr) {
  31. return infos, nil
  32. }
  33. err := json.Unmarshal([]byte(infosStr), &infos)
  34. if err != nil {
  35. return nil, err
  36. }
  37. return infos, nil
  38. }