You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在匿名嵌套结构体中使用JSON标签?

问题解答

当然可行,你当前代码报错是因为结构体标签的语法位置错误,把标签放在了不符合Go语法规范的位置。

错误原因

你原代码里将json:"_links"标签写在了内部struct关键字的前面,这是错误的写法。Go的结构体字段标签必须紧跟在字段类型的后面,而非struct关键字之后。

修正后的代码

func wrapHal(selfHref string) interface{} {
    return struct {
        // 把json标签放在字段类型(此处为struct{})的后方
        Links struct {
            Self struct {
                Href string
            }
        } `json:"_links"`
    }{
        Links: struct {
            Self struct {
                Href string
            }
        }{
            Self: struct {
                Href string
            }{
                Href: selfHref,
            },
        },
    }
}

验证效果

调用该函数并通过json.Marshal序列化后,会得到符合预期的JSON结果:

{"_links":{"Self":{"Href":"传入的selfHref参数值"}}}

可选优化方案

如果觉得重复定义匿名结构体过于繁琐,可以提前定义内部结构体类型,提升代码可读性和扩展性:

type HalLink struct {
    Href string
}

type HalLinks struct {
    Self HalLink
}

type HalResponse struct {
    Links HalLinks `json:"_links"`
}

func wrapHal(selfHref string) interface{} {
    return HalResponse{
        Links: HalLinks{
            Self: HalLink{Href: selfHref},
        },
    }
}

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:12:38