golang 多个struct 转换融合为一个json,平级融合或者多级融合

  1. 平级融合,就是下面例子,虽然A在B里面,但是A在struct B里面没有名字,输出结果就是A 和B在同一级的json下面。
Go 复制代码
package main

import (
	"encoding/json"
	"fmt"
)

type A struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	URL         string `json:"url"`
}

type B struct {
	Name string `json:"name"`
	*A
}

func main() {
	a := A{Name: "test", Description: "desc", URL: "https://example.com"}
	b := B{Name: "new name"}

	b.A = &a

	data, _ := json.Marshal(b)

	fmt.Println(string(data))
}

输出:{"name":"new name","description":"desc","url":"https://example.com"}

  1. 两级json,
Go 复制代码
package main

import (
	"encoding/json"
	"fmt"
)

type A struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	URL         string `json:"url"`
}

type B struct {
	Name string `json:"name"`
	Adata *A
}

func main() {
	a := A{Name: "test", Description: "desc", URL: "https://example.com"}
	b := B{Name: "new name"}

	b.Adata = &a

	data, _ := json.Marshal(b)

	fmt.Println(string(data))
}

输出:{"name":"new name","Adata":{"name":"test","description":"desc","url":"https://example.com"}}

相关推荐
curd_boy15 小时前
【数据库】分布式事务篇
数据库·分布式
笃行客从不躺平16 小时前
SQL 注入复习
java·数据库·sql
爬山算法16 小时前
Redis(115)Redis的性能优化有哪些方法?
数据库·redis·性能优化
腾讯云数据库16 小时前
「腾讯云NoSQL」技术之Redis篇:精准围剿rehash时延毛刺实践方案揭秘
数据库
古城小栈16 小时前
Go 1.25 发布:性能、工具与生态的全面进化
开发语言·后端·golang
ZhengEnCi17 小时前
S2B-SQL UPDATE 更新数据完全指南-99%的人忘记WHERE子句,SQL高手却这样写:从基础语法到多表关联的数据修改利器
数据库·sql
xcLeigh17 小时前
融合数据库时代:金仓 “五个一体化” 架构重塑数据管理新范式
数据库
byte轻骑兵17 小时前
数据库迁移革命:金仓KReplay如何用真实负载回放技术缩短3周测试周期
数据库
腾讯云数据库17 小时前
「腾讯云NoSQL」技术之向量数据库篇:自研分布式向量数据库,实现毫秒级时序一致备份的挑战和实践
数据库·nosql
敲上瘾17 小时前
C++ ODB ORM 完全指南:从入门到实战应用
linux·数据库·c++·oracle·db