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

Tableau JSON en tant que structure Go

王林
王林avant
2024-02-10 18:00:20885parcourir

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
}

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer