Maison > développement back-end > Golang > Tableau JSON en tant que structure Go

Tableau JSON en tant que structure Go

王林
Libérer: 2024-02-10 18:00:20
avant
918 Les gens l'ont consulté

JSON 数组作为 Go 结构

l'éditeur php Yuzai vous présente l'utilisation des tableaux JSON comme structures Go. En langage Go, le tableau JSON est une structure de données commune, qui peut être utilisée pour représenter plusieurs données du même type. En mappant les tableaux JSON aux structures Go, nous pouvons facilement les exploiter et les traiter. Cet article présentera en détail comment utiliser le package JSON dans le langage Go pour analyser et créer des tableaux JSON, et les convertir en structures Go correspondantes pour obtenir une gestion et un traitement efficaces des données. Que vous soyez débutant dans le langage Go ou développeur expérimenté, cet article vous apportera des conseils et méthodes pratiques pour vous aider à mieux comprendre et appliquer les tableaux JSON en tant que connaissances liées à la structure Go.

Contenu de la question

J'essaie d'appeler un tableau d'objets à partir d'un fichier json mais j'obtiens toujours l'erreur : "Impossible de transformer le tableau en valeur go de type config.appconfig". Comment puis-je m'assurer que ma structure go appelle un tableau d'objets dans un fichier json ? Voici les fichiers de configuration et les fichiers json que j'ai utilisés pour configurer la structure 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
}
Copier après la connexion

fichier 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": "***********"
  }
]
Copier après la connexion

Merci d'avance pour votre aide !

Solution

Votre fichier json de configuration est un tableau json et vous l'analysez dans une structure, vous devez l'analyser dans un tableau de structures.

Pour corriger votre code, modifiez l'initialisation de app par ceci.

var app []appconfig

func loadconfig() error {
    return parsejson("webrtc.json", &app)
}
Copier après la connexion

Voici l'exemple de code complet.

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)
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal