golang API json,struct結構中標籤(Tag)的使用

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

在看別人的一些代碼時,聲明結構時有個json:name是做什麼用的?

想知道原因得瞭解下:

在golang中,命名都是推薦都是用駝峰方式,並且在首字母大小寫有特殊的文法含義:包外無法引用。但是由經常需要和其它的系統進行資料互動,例如轉成json格式,儲存到Redis等等。這個時候如果直接用屬性名稱來作為索引值會不符合項目要求。

於是就有了tag,也就是有了json:name或者orm:"size(1000)"也或者json:name orm:"size(1000)"這樣的聲明。

在我們把結構轉成json時 就會以tag裡面的名字出現。

下面這是我在用beego架構的orm聲明的一個結構體

// 評論type Comment struct {    Id       int64     `json:"id"`    Tid      int64     `json:"tid"`    NickName string    `json:"nickName"`    Content  string    `json:"content" orm:"size(1000)"`    Created  time.Time `json:"created" orm:"index"`}

當我們在控制器中寫api時就可以直接取了

func (this *ApiCommentController) All() {    tid := this.Input().Get("tid")    // 擷取評論    comments, err := models.GetAllComment(tid)    if err != nil {        beego.Error(err)    }    this.Data["json"] = map[string]interface{}{        "code":    0,        "message": "擷取成功",        "date":    comments,    }    this.ServeJSON()    return}

這時提供者返回的資料就是以tag裡面的命名的key


返回的json

[擷取授權]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.