editor php Yuzai memperkenalkan anda kepada penggunaan tatasusunan JSON sebagai struktur Go. Dalam bahasa Go, tatasusunan JSON ialah struktur data biasa, yang boleh digunakan untuk mewakili berbilang data daripada jenis yang sama. Dengan memetakan tatasusunan JSON kepada struktur Go, kami boleh mengendalikan dan memprosesnya dengan mudah. Artikel ini akan memperkenalkan secara terperinci cara menggunakan pakej JSON dalam bahasa Go untuk menghuraikan dan membina tatasusunan JSON, dan menukarnya kepada struktur Go yang sepadan untuk mencapai pengurusan dan pemprosesan data yang berkesan. Sama ada anda seorang pemula dalam bahasa Go atau pembangun yang berpengalaman, artikel ini akan membawa anda petua dan kaedah praktikal untuk membantu anda memahami dan menggunakan tatasusunan JSON dengan lebih baik sebagai pengetahuan berkaitan struktur Go.
Saya cuba memanggil tatasusunan objek daripada fail json tetapi sentiasa mendapat ralat: "Tidak boleh menyahmarshal tatasusunan ke nilai go jenis config.appconfig". Bagaimanakah saya memastikan struktur go saya memanggil pelbagai objek dalam fail json? Berikut ialah fail konfigurasi dan fail json yang saya gunakan untuk menyediakan struktur go:
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 }
fail 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": "***********" } ]
Terima kasih terlebih dahulu atas bantuan anda!
Fail json konfigurasi anda ialah tatasusunan json dan anda sedang menghuraikannya ke dalam struct, anda perlu menghuraikannya ke dalam tatasusunan struct.
Untuk membetulkan kod anda, tukar permulaan app
kepada ini.
var app []appconfig func loadconfig() error { return parsejson("webrtc.json", &app) }
Ini adalah kod sampel lengkap.
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("%+v\n", App) }
Atas ialah kandungan terperinci Tatasusunan JSON sebagai struktur Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!