json.go 737 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package option
  2. import (
  3. "encoding/json"
  4. )
  5. func ToMap(v any) (map[string]any, error) {
  6. bytes, err := json.Marshal(v)
  7. if err != nil {
  8. return nil, err
  9. }
  10. var content map[string]any
  11. err = json.Unmarshal(bytes, &content)
  12. if err != nil {
  13. return nil, err
  14. }
  15. return content, nil
  16. }
  17. func MergeObjects(objects ...any) (map[string]any, error) {
  18. content := make(map[string]any)
  19. for _, object := range objects {
  20. objectMap, err := ToMap(object)
  21. if err != nil {
  22. return nil, err
  23. }
  24. for k, v := range objectMap {
  25. content[k] = v
  26. }
  27. }
  28. return content, nil
  29. }
  30. func MarshallObjects(objects ...any) ([]byte, error) {
  31. content, err := MergeObjects(objects...)
  32. if err != nil {
  33. return nil, err
  34. }
  35. return json.Marshal(content)
  36. }