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

JSON-Array als Go-Struktur

王林
王林nach vorne
2024-02-10 18:00:20883Durchsuche

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
}

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": "***********"
  }
]

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)
}

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)
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen