结构字段使用保留名称 golang

huangapple go评论79阅读模式
英文:

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:&quot;cardId&quot;`
	Name    string `json:&quot;name&quot;`
	CardSet string `json:&quot;cardSet&quot;`
	Type    string `json:&quot;type&quot;`
}

The json:&quot;&lt;name&gt;&quot; 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:&quot;cardId&quot;`
  Name    string `json:&quot;name&quot;`
  CardSet string `json:&quot;cardSet&quot;`
  TheType    string  `json:&quot;type&quot;`
}

huangapple
  • 本文由 发表于 2015年8月28日 04:34:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/32258946.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定