Maison > développement back-end > Golang > Ajouter dynamiquement des éléments de la structure Go à JSON

Ajouter dynamiquement des éléments de la structure Go à JSON

王林
Libérer: 2024-02-06 10:27:03
avant
1094 Les gens l'ont consulté

从 Go 结构动态添加元素到 JSON

Contenu de la question

Le format de sortie que je souhaite obtenir est :

{"data": [ [ 0, [ "brendan", "fraser" ] ] , [ 1, [ "keanu", "reeves" ] ] ] }
Copier après la connexion
Copier après la connexion

Pour cela, j'ai défini la structure suivante :

type actors struct {
    data [][]interface{} `json:"data"`
    }
Copier après la connexion

Chaque valeur brendanfraserkeanureeves 来自另一个以 rec.records[0].value Structure de données accessible par format.

C'est-à-dire :

rec.records[0].value 将对应于 brendan

rec.records[1].value 将对应 fraser Attendez.

Pour attribuer une valeur à cette structure, je fais :

numberofactcnt := 0
numberofcolparsed := 0
numberofcolumns := 3

var act actors
var res []actors

    for i := 0; i < 2; i++ {
        numberofactcnt = numberofactcnt + numberofcolparsed
        for j := 0; j < 1; j++ {
            act = actors{[][]interface{}{{i, []string{rec.records[numberofactcnt].value, rec.records[numberofactcnt+1].value}}}}
            re, _ := json.marshal(act)
            fmt.println(string(re))
            numberofcolparsed = numberofcolumns - 1
        }
    }
Copier après la connexion

Cela me donne le résultat :

{"data":[[0,["brendan","fraser"]]]}
{"data":[[1,["keanu","reeves"]]]}
Copier après la connexion

Comment obtenir la sortie dans ce format ? :

{"data": [ [ 0, [ "brendan", "fraser" ] ] , [ 1, [ "keanu", "reeves" ] ] ] }
Copier après la connexion
Copier après la connexion

Je pense que ma structure est définie correctement, mais comment ajouter les valeurs au même json ?


Bonne réponse


Tout d'abord, parcourez tous les enregistrements et utilisez append 将它们存储在 data [][]any en tranches, puis après la boucle, rassemblez les résultats.

numberOfActCnt := 0
numberOfColParsed := 0
numberOfColumns := 3

var res struct { Data [][]any `json:"data"` }
for i := 0; i < 2; i++ {
    numberOfActCnt = numberOfActCnt + numberOfColParsed
    for j := 0; j < 1; j++ {
        res.Data = append(res.Data, []any{i, []string{rec.records[numberOfActCnt].value, rec.records[numberOfActCnt+1].value}})
        numberOfColParsed = numberOfColumns - 1
    }
}
re, err := json.Marshal(res)
if err != nil {
    panic(err)
}
fmt.Println(string(re))
Copier après la connexion

Attention : any 是 go1 以来 interface{} 的别名.18,如果您使用的是旧版本的 go,那么您需要继续使用 interface{}.

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