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"}}

相关推荐
葛小白124 分钟前
C#数据类型:string简单使用
服务器·数据库·c#
污斑兔26 分钟前
MongoDB的$sample是啥?
数据库·mongodb
马丁的代码日记2 小时前
MySQL InnoDB 行锁与死锁排查实战演示
数据库·mysql
拍客圈3 小时前
数据主站+副站做的设置
数据库
计算机学长felix3 小时前
基于SpringBoot的“面向校园的助力跑腿系统”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·后端
金仓拾光集4 小时前
__工艺数据管理的范式转变:金仓数据库替代MongoDB实操实践__
数据库·mongodb
xiaogg36784 小时前
redis-cluster集群配置部署
数据库·redis·缓存
运维小文5 小时前
MySQL高可用方案MIC&mysqlCluster+mysqlRouter
数据库·mysql·mic·mysql高可用·mysqlcluster·mysqlrouter
不剪发的Tony老师5 小时前
Redis Commander:一款基于Web、免费开源的Redis管理工具
数据库·redis
金仓拾光集5 小时前
__金仓数据库替代MongoDB护航医疗隐私:医院患者随访记录安全存储实践__
数据库·安全·mongodb