登录
首页 >  Golang >  Go问答

如何在golang中获取结构的json字段名称?

来源:Golang技术栈

时间:2023-05-04 08:43:12 427浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在golang中获取结构的json字段名称?》,这篇文章主要讲到golang等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

获取此结构的 json 字段名称的方法是什么?

type example struct {
    Id          int `json:"id"`
    CreatedAt   string `json:"created_at"`
    Tag         string `json:"tag"`
    Text        string `json:"text"`
    AuthorId    int `json:"author_id"`
}

我尝试使用此功能打印字段:

func (b example) PrintFields() {
    val := reflect.ValueOf(b)
    for i := 0; i 
<p>我当然得到:</p>
<pre class="brush:go;toolbar:false">Id
CreatedAt
Tag
Text
AuthorId

但我想要类似的东西:

id
created_at
tag
text
author_id

正确答案

您使用StructTag类型来获取标签。我链接的文档有示例,请查看它们,但您的代码可能类似于

func (b example) PrintFields() {
  val := reflect.ValueOf(b)
  for i := 0; i 
<p><strong>注意</strong><code>json</code>标签格式不仅支持字段名称,例如<code>omitempty</code>or
<code>string</code>,因此如果您也需要一种处理该问题的方法,则应进一步改进该功能<code>PrintFields</code>:</p>
<ol><li>我们需要检查<code>json</code>标签是否是<code>-</code>(即<code>json:"-"</code>)</li>
<li>我们需要检查名称是否存在并将其隔离</li>
</ol><p>像这样的东西:</p>
<pre class="brush:go;toolbar:false">func (b example) PrintFields() {
  val := reflect.ValueOf(b)
  for i := 0; i <p>好了,本文到此结束,带大家了解了《如何在golang中获取结构的json字段名称?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!</p>
声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表