ANi*_*sus 157 json marshalling go
我希望使用该"encoding/json"包来封送在我的应用程序的一个导入包中声明的结构.
例如.:
type T struct {
Foo int
}
Run Code Online (Sandbox Code Playgroud)
因为它是导入的,所以结构中的所有可用(导出)字段都以大写字母开头.但我希望有小写的密钥名称:
out, err := json.Marshal(&T{Foo: 42})
Run Code Online (Sandbox Code Playgroud)
会导致
{ "富":42}
但我希望得到
{ "foo" 的:42}
是否有可能以一种简单的方式解决问题?
jim*_*imt 243
看看编码/ json.Marshal的文档.它讨论了使用struct字段标记来确定生成的json的格式.
例如:
type T struct {
FieldA int `json:"field_a"`
FieldB string `json:"field_b,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
这将生成JSON,如下所示:
{
"field_a": 1234,
"field_b": "foobar"
}
Run Code Online (Sandbox Code Playgroud)
您可以使用要导出的键创建自己的结构,并为小写名称提供适当的json标记.然后,您可以在将其编码为JSON之前将所需的结构复制到您的结构中.或者如果你不想打扰制作一个本地结构,你可能会编写一个map[string]interface{}并对其进行编码.
我只会补充一点,您可以使用自动生成这些标签gopls。手动添加标签是一项琐碎的任务,尤其是对于大型 json 结构,因此该功能是一个救星。
添加gopls语言服务器根据个人的首选编辑器而有所不同。后:
go install golang.org/x/tools/gopls@latest
Run Code Online (Sandbox Code Playgroud)
对于带有 CoC 的 Neovim,您可以:CocInstall coc-go然后go.tags.add. 有关 Go 的 CoC 扩展的完整文档,请参阅此处。
| 归档时间: |
|
| 查看次数: |
36515 次 |
| 最近记录: |