我尝试从JSON文件调用一个对象数组,但总是遇到一个错误:“无法将数组解组为config.APPConfig”类型的Go语言值。我如何确保我的Go语言结构体调用JSON文件中对象数组的配置?下面是我设置Go语言结构体的配置文件和JSON文件:
配置开始
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": "***********"
}
]
提前感谢您的帮助!
1条答案
按热度按时间vqlkdk9b1#
您的config json文件是一个JSON数组,您要将其解析为struct,您需要将其解析为struct数组。
要修复您的代码,请将
App
的初始化更改为。这里的例子完整的代码.