package iotStruct import ( "encoding/json" "reflect" "strings" ) type DtuConfig struct { Enable bool `json:"enable"` Sn string `json:"sn"` Name string `json:"name"` Mode int `json:"mode"` Cycle int `json:"cycle"` SlaveConfig *[]SlaveConfig `json:"slaveConfig"` } type SlaveConfig struct { No string `json:"no"` Enable bool `json:"enable"` Addr int `json:"addr"` //表计串口地址 //LvRef float32 `json:"lvRef"` //表计线电压基准(220) //PvRef float32 `json:"pvRef"` //表计相电压基准(380) Protocol string `json:"protocol"` //表计协议 ReportConfig *[]ReportConfig `json:"reportConfig"` OtherConfig string `json:"other"` // 其他配置 } type ReportConfig struct { Host string `json:"host"` Protocol string `json:"protocol"` ST string `json:"st"` MN string `json:"mn"` User string `json:"user"` Pwd string `json:"pwd"` BmYz *BmYz `json:"bmYz"` //编码因子 } func (rc *ReportConfig) String() string { return rc.Host + "|" + rc.Protocol + "|" + rc.MN + "|" + rc.User + "|" + rc.Pwd } type BmYz struct { P string Pa string Pb string Pc string Q string Qa string Qb string Qc string Pf string Pfa string Pfb string Pfc string Ua string Ub string Uc string Uab string Ubc string Uca string Ia string Ib string Ic string Iz string Uaw string Ubw string Ucw string Uabw string Ubcw string Ucaw string F string FW string IUnbalance string UUnbalance string Dp string Pv string Tpe string Tqe string Fpe string Fqe string Tps string Tqs string Fps string Fqs string T string T2 string T3 string T4 string T5 string T6 string T7 string } // GetBmYzKey 获取BmYz的键 func (rc *ReportConfig) GetBmYzKey(key string) string { return rc.GetBmYzKeyOrDefault(key, strings.ToLower(key)) } // GetBmYzKeyOrDefault 获取BmYz的键 func (rc *ReportConfig) GetBmYzKeyOrDefault(key string, defaultValue string) string { if rc.BmYz == nil { return defaultValue } v := reflect.ValueOf(rc.BmYz).Elem() field := v.FieldByName(key) if field.IsValid() { return field.String() } return defaultValue } func (bm *BmYz) BuildBmYzArray(data string) (*map[string]BmYz, error) { var err error mp := make(map[string]BmYz) if data != "" { err = json.Unmarshal([]byte(data), &mp) } return &mp, err }