第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

合并兩個不同的結(jié)構(gòu)

合并兩個不同的結(jié)構(gòu)

Go
夢里花落0921 2022-07-18 10:00:47
我有兩個名為“Invoices”、“Transactions”的結(jié)構(gòu)。這些是 GORM 模型。我想合并這些結(jié)構(gòu)并轉(zhuǎn)換 json。例子:type Invoice struct {     gorm.Model     DocType string `json:"docType"`     Total float64 `json:"total"`}type Transaction struct {     gorm.Model     DocType string `json:"docType"`     Total float64 `json:"total"`     Account uint `json:"account"`}我想像這樣回應(yīng);[{docType:"invoice", total: "123.00"}{docType:"transaction", account:"1", total: "124.00"}{docType:"invoice", total: "125.00"}]
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

如果您想要在問題中列出的響應(yīng),您可以使用通用數(shù)組[]interface{}并將其轉(zhuǎn)換為 JSON。


inv1 := Invoice{

    DocType: "invoice",

    Total:   123.00,

}

inv2 := Invoice{

    DocType: "invoice",

    Total:   125.00,

}

tran := Transaction{

    DocType: "transaction",

    Total:   124.00,

    Account: 1,

}

bytes, _ := json.Marshal([]interface{}{inv1, tran, inv2})

fmt.Println(string(bytes))

不管你是用來自gorm的值填充結(jié)構(gòu)還是像我在這里做的那樣初始化它們自己都沒有關(guān)系。


閱讀評論,您似乎有兩個結(jié)構(gòu)切片,您希望將兩者合并為一個切片,然后編碼為 JSON。


你可以這樣做:


arr1 := []Invoice{inv1, inv2}

arr2 := []Transaction{tran}


combined := make([]interface{}, 0, len(arr1)+len(arr2))

for i := range arr1 {

    combined = append(combined, arr1[i])

}

for i := range arr2 {

    combined = append(combined, arr2[i])

}

bytes, _ := json.Marshal(combined)

fmt.Println(string(bytes))

在這里,我只是使用自己創(chuàng)建的切片,但這些切片很容易來自 gorm 的db.Find(&arr1).


查看完整回答
反對 回復(fù) 2022-07-18
  • 1 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號