亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

合并兩個不同的結構

合并兩個不同的結構

Go
夢里花落0921 2022-07-18 10:00:47
我有兩個名為“Invoices”、“Transactions”的結構。這些是 GORM 模型。我想合并這些結構并轉換 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"`}我想像這樣回應;[{docType:"invoice", total: "123.00"}{docType:"transaction", account:"1", total: "124.00"}{docType:"invoice", total: "125.00"}]
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

如果您想要在問題中列出的響應,您可以使用通用數組[]interface{}并將其轉換為 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的值填充結構還是像我在這里做的那樣初始化它們自己都沒有關系。


閱讀評論,您似乎有兩個結構切片,您希望將兩者合并為一個切片,然后編碼為 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))

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


查看完整回答
反對 回復 2022-07-18
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號