Rumah > pembangunan bahagian belakang > Golang > Tambah elemen secara dinamik daripada struct Go ke JSON

Tambah elemen secara dinamik daripada struct Go ke JSON

王林
Lepaskan: 2024-02-06 10:27:03
ke hadapan
1078 orang telah melayarinya

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

Kandungan soalan

Format output yang saya ingin dapatkan ialah:

{"data": [ [ 0, [ "brendan", "fraser" ] ] , [ 1, [ "keanu", "reeves" ] ] ] }
Salin selepas log masuk
Salin selepas log masuk

Untuk ini, saya mentakrifkan struktur berikut:

type actors struct {
    data [][]interface{} `json:"data"`
    }
Salin selepas log masuk

Setiap nilai brendanfraserkeanureeves 来自另一个以 rec.records[0].value Struktur data diakses mengikut format.

Iaitu:

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

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

Untuk memberikan nilai kepada struktur ini, saya melakukan:

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
        }
    }
Salin selepas log masuk

Ini memberikan saya output:

{"data":[[0,["brendan","fraser"]]]}
{"data":[[1,["keanu","reeves"]]]}
Salin selepas log masuk

Bagaimana untuk mendapatkan output dalam format ini? :

{"data": [ [ 0, [ "brendan", "fraser" ] ] , [ 1, [ "keanu", "reeves" ] ] ] }
Salin selepas log masuk
Salin selepas log masuk

Saya rasa struct saya ditakrifkan dengan betul, tetapi bagaimana saya menambahkan nilai ke json yang sama?


Jawapan betul


Mula-mula, putar semua rekod dan gunakan append 将它们存储在 data [][]any dalam kepingan, kemudian selepas gelung, marshal hasilnya.

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))
Salin selepas log masuk

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

Atas ialah kandungan terperinci Tambah elemen secara dinamik daripada struct Go ke JSON. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan