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

相关推荐
AI-好学者2 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
其实防守也摸鱼4 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚4 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔7254 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋4 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_5 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾5 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
灯澜忆梦6 小时前
GO---可见性规则
开发语言·golang
IvorySQL6 小时前
PG 日报|社区讨论重构 pg_hba 配置文件格式
数据库·人工智能·postgresql·重构·ivorysql
逝水无殇6 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#