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

如何在Go中为泛型类型扁平化JSON以适配HAL规范

在Go中实现HAL规范的JSON序列化问题

我尝试在Go中实现HAL规范,为此定义了一个包含泛型Payload和_links字段的HAL类型:

type HAL[T any] struct {
    Payload T
    Links   Linkset `json:"_links,omitempty"`
}

根据HAL规范,Payload应处于JSON顶层而非嵌套结构。例如,使用如下测试代码:

type TestPayload struct {
    Name   string `json:"name"`
    Answer int    `json:"answer"`
}

hal := HAL[TestPayload]{
    Payload: TestPayload{
        Name:   "Graham",
        Answer: 42,
    },
    Links: Linkset{
        "self": {
            {Href: "/"},
        },
    },
}

预期生成的JSON为:

{
    "name": "Graham",
    "answer": 42,
    "_links": {
      "self": {"href": "/"}
    }
}

但我找不到合适的JSON序列化实现方式:

  • 曾尝试将Payload作为匿名成员嵌入,但该方式不适用于泛型类型
  • 我可以自行编写MarshalJSON方法实现,但想了解是否有标准解决方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:20:31