英文:
Struct field with reserved name golang
问题
你好,我正在进行一个API客户端的开发,我想使用一个结构体来提取JSON数据,但问题是其中一个JSON字段应该被命名为"type",据我所知,这是一个保留关键字,我该如何创建一个包含"type"字段的结构体呢?
示例:
我想要实现的代码如下:
type Card struct {
cardId string
name string
cardSet string
type string
}
英文:
Hi Im doing an API client and I want to use a struct to pull out the json, the problem is that one of the json fields should be named type, as far as I know it is a reserved keyword, how can I create a struct with a "type" field in it?
Example:
What I want to do:
type Card struct {
cardId string
name string
cardSet string
type string
}
答案1
得分: 34
那样不会起作用,因为你没有导出字段名。要在JSON输出中使用不同的字段名,你可以使用结构标签(struct tags)。例如,要在JSON输出中将字段命名为CardID、Name、CardSet和Type,你可以像这样定义你的结构体:
type Card struct {
CardID string `json:"cardId"`
Name string `json:"name"`
CardSet string `json:"cardSet"`
Type string `json:"type"`
}
json:"<name>"
标签指定了在JSON输出中使用的字段名。
英文:
That won't work because you're not exporting the field names. To use different field names in the JSON output, you can use struct tags. For example, to name the fields CardID, Name, CardSet, and Type in the JSON output, you can define your struct like this:
type Card struct {
CardID string `json:"cardId"`
Name string `json:"name"`
CardSet string `json:"cardSet"`
Type string `json:"type"`
}
The json:"<name>"
tags specify the field names to use in the JSON output.
答案2
得分: 4
你必须在你的模型上使用 JSON 注解。此外,字段必须被导出(大写),否则解组器将无法使用它们。
type Card struct {
CardId string `json:"cardId"`
Name string `json:"name"`
CardSet string `json:"cardSet"`
TheType string `json:"type"`
}
英文:
You have to use json annotations on your model. Also, the fields have to be exported (upper case) or the unmarshaller won't be able to make use of them.
type Card struct {
CardId string `json:"cardId"`
Name string `json:"name"`
CardSet string `json:"cardSet"`
TheType string `json:"type"`
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论