Heim > Backend-Entwicklung > Golang > JSON-Array als Go-Struktur

JSON-Array als Go-Struktur

王林
Freigeben: 2024-02-10 18:00:20
nach vorne
921 Leute haben es durchsucht

JSON 数组作为 Go 结构

php-Editor Yuzai führt Sie in die Verwendung von JSON-Arrays als Go-Strukturen ein. In der Go-Sprache ist ein JSON-Array eine allgemeine Datenstruktur, die zur Darstellung mehrerer Daten desselben Typs verwendet werden kann. Durch die Zuordnung von JSON-Arrays zu Go-Strukturen können wir sie einfach bedienen und verarbeiten. In diesem Artikel wird detailliert beschrieben, wie Sie das JSON-Paket in der Go-Sprache zum Parsen und Erstellen von JSON-Arrays verwenden und diese in entsprechende Go-Strukturen konvertieren, um eine effektive Verwaltung und Verarbeitung von Daten zu erreichen. Egal, ob Sie ein Anfänger in der Go-Sprache oder ein erfahrener Entwickler sind, dieser Artikel bietet Ihnen praktische Tipps und Methoden, die Ihnen helfen, JSON-Arrays besser zu verstehen und als strukturbezogenes Go-Wissen anzuwenden.

Frageninhalt

Ich versuche, ein Array von Objekten aus einer JSON-Datei aufzurufen, erhalte aber immer die Fehlermeldung: „Array kann nicht in Go-Wert vom Typ config.appconfig entmarshaliert werden“. Wie stelle ich sicher, dass meine Go-Struktur ein Array von Objekten in einer JSON-Datei aufruft? Im Folgenden sind die Konfigurationsdateien und JSON-Dateien aufgeführt, die ich zum Einrichten der Go-Struktur verwendet habe:

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
}
Nach dem Login kopieren

json-Datei

[
  {
    "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": "***********"
  }
]
Nach dem Login kopieren

Vielen Dank im Voraus für Ihre Hilfe!

Problemumgehung

Ihre Konfigurations-JSON-Datei ist ein JSON-Array und Sie analysieren es in eine Struktur. Sie müssen es in ein Array von Strukturen analysieren.

Um Ihren Code zu korrigieren, ändern Sie die Initialisierung von app in diese.

var app []appconfig

func loadconfig() error {
    return parsejson("webrtc.json", &app)
}
Nach dem Login kopieren

Dies ist der vollständige Beispielcode.

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)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonJSON-Array als Go-Struktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage