Heim > Backend-Entwicklung > Golang > Fügen Sie Elemente aus der Go-Struktur dynamisch zu JSON hinzu

Fügen Sie Elemente aus der Go-Struktur dynamisch zu JSON hinzu

王林
Freigeben: 2024-02-06 10:27:03
nach vorne
1040 Leute haben es durchsucht

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

Frageninhalt

Das Ausgabeformat, das ich erhalten möchte, ist:

{"data": [ [ 0, [ "brendan", "fraser" ] ] , [ 1, [ "keanu", "reeves" ] ] ] }
Nach dem Login kopieren

Dafür habe ich folgende Struktur definiert:

type actors struct {
    data [][]interface{} `json:"data"`
    }
Nach dem Login kopieren

Jeder Wert brendanfraserkeanureeves 来自另一个以 rec.records[0].value Datenstruktur, auf die nach Format zugegriffen wird.

Das heißt:

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

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

Um dieser Struktur einen Wert zuzuweisen, gehe ich wie folgt vor:

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

Das gibt mir die Ausgabe:

{"data":[[0,["brendan","fraser"]]]}
{"data":[[1,["keanu","reeves"]]]}
Nach dem Login kopieren

Wie erhalte ich die Ausgabe in diesem Format? :

{"data": [ [ 0, [ "Brendan", "Fraser" ] ] , [ 1, [ "Keanu", "Reeves" ] ] ] }
Nach dem Login kopieren

Ich denke, meine Struktur ist richtig definiert, aber wie hänge ich die Werte an denselben JSON an?


Richtige Antwort


Zuerst eine Schleife durch alle Datensätze durchführen und append 将它们存储在 data [][]any in Slices verwenden, dann nach der Schleife die Ergebnisse zusammenstellen.

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

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

Das obige ist der detaillierte Inhalt vonFügen Sie Elemente aus der Go-Struktur dynamisch zu JSON hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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