JSON数组作为Go结构



我试图从我的JSON文件中调用对象数组,但我总是面临一个错误说:"无法将数组解封为config. appconfig类型的Go值"。我怎么能确保配置如何我的Go结构调用我的JSON文件中的对象数组?以下是我设置Go结构和JSON文件的配置文件:

Config.go

package config
import (
"encoding/json"
"io/ioutil"
)
type Easy struct {
UID string `json:"uId"`
}
type Auth struct {
Code string `json:"code"`
}
type APPConfig struct {
OpenAPIMode string `json:"openAPIMode"` 
OpenAPIURL  string `json:"openAPIUrl"`  
ClientID string `json:"clientId"` 
Secret   string `json:"secret"` 
AuthMode string `json:"authMode"`
Easy Easy `json:"easy"`
Auth Auth `json:"auth"`
DeviceID string `json:"deviceId"`
UID          string `json:"-"` 
MQTTUID      string `json:"-"` 
AccessToken  string `json:"-"`
RefreshToken string `json:"-"`
ExpireTime   int64  `json:"-"`
}
var App = APPConfig{
OpenAPIMode: "mqtt",
OpenAPIURL:  "openapi.tuyacn.com",
}

func LoadConfig() error {
return parseJSON("webrtc.json", &App)
}
func parseJSON(path string, v interface{}) error {
data, err := ioutil.ReadFile(path)
if err != nil {
return err
}
err = json.Unmarshal(data, v)
return err
}

JSON文件

[
{
"openAPIMode": "mqtt",
"openAPIUrl": "openapi.tuyaus.com",
"clientId": "*****",
"secret": "**************",
"authMode": "easy",
"easy": {
"uId": "**********"
},
"auth": {
"code": ""
},
"deviceId": "***********"
},
{
"openAPIMode": "mqtt",
"openAPIUrl": "openapi.tuyaus.com",
"clientId": "*****",
"secret": "**************",
"authMode": "easy",
"easy": {
"uId": "**********"
},
"auth": {
"code": ""
},
"deviceId": "***********"
}
]

提前感谢你的帮助!

你的配置json文件是一个json数组,你正在解析它的结构,你需要解析它的结构数组。

修改App的初始化:

var App []APPConfig
func LoadConfig() error {
return parseJSON("webrtc.json", &App)
}

下面是完整的示例代码:

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
)
type Easy struct {
UID string `json:"uId"`
}
type Auth struct {
Code string `json:"code"`
}
type APPConfig struct {
OpenAPIMode string `json:"openAPIMode"`
OpenAPIURL  string `json:"openAPIUrl"`
ClientID string `json:"clientId"`
Secret   string `json:"secret"`
AuthMode string `json:"authMode"`
Easy Easy `json:"easy"`
Auth Auth `json:"auth"`
DeviceID string `json:"deviceId"`
UID          string `json:"-"`
MQTTUID      string `json:"-"`
AccessToken  string `json:"-"`
RefreshToken string `json:"-"`
ExpireTime   int64  `json:"-"`
}
var App []APPConfig
func LoadConfig() error {
return parseJSON("webrtc.json", &App)
}
func parseJSON(path string, v interface{}) error {
data, err := ioutil.ReadFile(path)
if err != nil {
return err
}
err = json.Unmarshal(data, v)
return err
}
func main() {
err := LoadConfig()
if err != nil {
panic(err)
}
fmt.Printf("%+vn", App)
}

相关内容

  • 没有找到相关文章

最新更新