34
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-09-10

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を使用することを想定して作成した。

34
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?