Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Goの構造体に付加するタグを複数にしたい場合

More than 5 years have passed since last update.

Modelとなる構造体に対して、dbのテーブルとのマッピングやjsonのkey名を指定したいときに、tagを利用する方法がある。

たとえば、Id・Description・CreatedAt というフィールド名を持つTodoという構造体と、それぞれがsnake caseとなっているDBテーブルのフィールドの紐付けは、構造体宣言時にこういうタグをつければいい。

models/todo.go
package models

import "time"

type Todo struct {
    Id          int       `db:"id"`
    Description string    `db:"description"`
    CreatedAt   time.Time `db:"created_at"`
}

※ gorpの場合、テーブル名と構造体の紐付けは別の場所で行う

ここで、「このモデルそのままViewに投げてJSONで出力したいな〜」となったとき、
Todo構造体のフィールド名がそのままKey名になるため、以下のようなJSONになってしまう。

{ "Id":1, "Description":"代々木公園から蚊を駆逐する", "CreatedAt":"2014-09-10T14:02:22Z"}

ここで気になるのが、「タグを複数つけることはできないのか」ということだが、問題なくできた。
バッククォート中にスペースで区切ることで、タグを複数付加することができる。

models/todo.go
package models

import "time"

type Todo struct {
    Id          int       `db:"id" json:"id"`
    Description string    `db:"description" json:"description"`
    CreatedAt   time.Time `db:"created_at" json:"created_at"`
}

JSON表示するとこのとおり。

{ "id":1, "description":"代々木公園から蚊を駆逐する", "created_at":"2014-09-10T14:02:22Z"}

注意事項

上記記事は Martini Webフレームワークおよびそのrenderプラグイン、そしてORマッパーにgorpを使用することを想定して作成した。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away