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

相关推荐
ID_1800790547318 小时前
(淘宝 / 京东)商品评论 API 接口:技术实战案例与架构分析
服务器·数据库·架构
爱莉希雅&&&18 小时前
Zabbix监控初步搭建
linux·运维·数据库·mysql·zabbix
狼与自由18 小时前
mysql到clickhouse
数据库·mysql·clickhouse
六月雨滴18 小时前
Oracle 数据库之归档日志
数据库·oracle·dba
土狗TuGou18 小时前
SQL内功笔记 · 第6篇:窗口函数的使用ROW_NUMBER等
java·数据库·后端·sql·mysql
川石课堂软件测试18 小时前
使用mock进行接口测试教程
数据库·python·功能测试·测试工具·华为·单元测试·appium
Solis程序员19 小时前
MongoDB 超全入门到实战:从原理、CRUD到高可用架构
数据库·mongodb·架构
yurenpai(27届找实习中)19 小时前
redis_点评(26.附近店铺——实现附近商家功能)
数据库·spring boot·redis
BullSmall19 小时前
异构数据库(通俗 + 核心知识点)
数据库
Rick199319 小时前
索引下推(ICP):在已经用到联合索引的前提下,减少回表次数,提升查询效率
数据库