struct_json.go 860 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package strcut_json
  2. import (
  3. "encoding/json"
  4. "io"
  5. "os"
  6. "path/filepath"
  7. )
  8. // ToFile 注意传入的不是指针
  9. func ToFile(srcJsonFileFPath string, input interface{}) error {
  10. jsonBytes, err := json.Marshal(input)
  11. if err != nil {
  12. return err
  13. }
  14. file, err := os.Create(filepath.FromSlash(srcJsonFileFPath))
  15. if err != nil {
  16. return err
  17. }
  18. defer func() {
  19. _ = file.Close()
  20. }()
  21. _, err = file.Write(jsonBytes)
  22. if err != nil {
  23. return err
  24. }
  25. return nil
  26. }
  27. // ToStruct 传入的必须是指针
  28. func ToStruct(desJsonFileFPath string, output interface{}) error {
  29. file, err := os.Open(filepath.FromSlash(desJsonFileFPath))
  30. if err != nil {
  31. return err
  32. }
  33. defer func() {
  34. _ = file.Close()
  35. }()
  36. bytes, err := io.ReadAll(file)
  37. if err != nil {
  38. return err
  39. }
  40. err = json.Unmarshal(bytes, output)
  41. if err != nil {
  42. return err
  43. }
  44. return nil
  45. }