如何在Go结构中重写json标记?

如何在Go结构中重写json标记?,json,go,marshalling,hl7-fhir,Json,Go,Marshalling,Hl7 Fhir,我想整理部分: 它是的Go实现的一部分,只包括元数据字段,省略了三个内容字段(codeSystem、compose和expansion)。我不能(也不应该)更改原始源代码中的JSON标记,因为其他代码强烈依赖于它的编写方式。如何让json.Marshal重写这些结构元素上的现有json标记?您不能更改它,但不必更改 最简单的解决方案是创建自己的结构,定义自己的json标记(希望它们在输出中的显示方式),复制字段,并封送自己的结构的值 例如,假设您要封送Id和Url字段,然后: type MyVa

我想整理部分:


它是的Go实现的一部分,只包括元数据字段,省略了三个内容字段(codeSystem、compose和expansion)。我不能(也不应该)更改原始源代码中的JSON标记,因为其他代码强烈依赖于它的编写方式。如何让json.Marshal重写这些结构元素上的现有json标记?

您不能更改它,但不必更改

最简单的解决方案是创建自己的结构,定义自己的json标记(希望它们在输出中的显示方式),复制字段,并封送自己的结构的值

例如,假设您要封送
Id
Url
字段,然后:

type MyValueSet struct {
    Id string  `json:"MyId"`
    Url string `json:"MyUrl"`
}

var vs ValueSet = ... // Comes from somewhere

mvs := MyValueSet {
    Id:  vs.Id,
    Url: vs.Url,
}

data, err := json.Marshal(&mvs)
// Check err

你不能改变它,但你不必改变

最简单的解决方案是创建自己的结构,定义自己的json标记(希望它们在输出中的显示方式),复制字段,并封送自己的结构的值

例如,假设您要封送
Id
Url
字段,然后:

type MyValueSet struct {
    Id string  `json:"MyId"`
    Url string `json:"MyUrl"`
}

var vs ValueSet = ... // Comes from somewhere

mvs := MyValueSet {
    Id:  vs.Id,
    Url: vs.Url,
}

data, err := json.Marshal(&mvs)
// Check err