json.go 942 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "io/ioutil"
  6. )
  7. //定义配置文件解析后的结构
  8. type Server struct {
  9. Ip string
  10. Port int
  11. Tcp int
  12. Vkey string
  13. Num int
  14. }
  15. type Site struct {
  16. Host string
  17. Url string
  18. Port int
  19. }
  20. type Config struct {
  21. Server Server
  22. SiteList []Site
  23. Replace int
  24. }
  25. type JsonStruct struct {
  26. }
  27. func NewJsonStruct() *JsonStruct {
  28. return &JsonStruct{}
  29. }
  30. func (jst *JsonStruct) Load(filename string) (Config, error) {
  31. data, err := ioutil.ReadFile(filename)
  32. config := Config{}
  33. if err != nil {
  34. return config, errors.New("配置文件打开错误")
  35. }
  36. err = json.Unmarshal(data, &config)
  37. if err != nil {
  38. return config, errors.New("配置文件解析错误")
  39. }
  40. if config.Server.Tcp <= 0 || config.Server.Tcp >= 65536 {
  41. return config, errors.New("请输入正确的tcp端口")
  42. }
  43. if config.Server.Vkey == "" {
  44. return config, errors.New("密钥不能为空!")
  45. }
  46. return config, nil
  47. }