如何在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
相关产品推荐
相关产品推荐

