city_data_array.go 884 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package conf
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "go.uber.org/zap"
  6. "os"
  7. "sync"
  8. )
  9. // 定义结构体用于存储 JSON 内容
  10. type CityDataArray struct {
  11. Name string `json:"name"`
  12. Value string `json:"value"`
  13. }
  14. var CityDataMap map[string]string
  15. var mutex sync.Mutex // 用于在多线程环境下保护全局变量的互斥锁
  16. // 初始化城市数据
  17. func InitCityData() {
  18. // 读取 JSON 文件
  19. jsonData, err := os.ReadFile("./conf/data-array.json")
  20. if err != nil {
  21. zap.L().Error(fmt.Sprintf("读取 JSON 文件失败:%s", err.Error()))
  22. }
  23. var cityDataArray []CityDataArray
  24. // 解码 JSON 数据到结构体
  25. err = json.Unmarshal(jsonData, &cityDataArray)
  26. if err != nil {
  27. zap.L().Error(fmt.Sprintf("解码 JSON 数据失败::%s", err.Error()))
  28. }
  29. CityDataMap = make(map[string]string)
  30. for _, city := range cityDataArray {
  31. CityDataMap[city.Value] = city.Name
  32. }
  33. }