/ / JSONの拡張ストラテジについての命名戦略 - json、go

Go JSON拡張に関するjsonの戦略 - json、go

私のGo構造体は次のようなものです:

type BaseModel struct {
Id          string    `json:"id"`
CreatedTime time.Time `json:"createdTime"`
UpdatedTime time.Time `json:"updatedTime"`
Deleted     bool      `json:"deleted"`
}

type Category struct {
BaseModel
Parent    string `json:"parent"`
Name      string `json:"name"`
IconClass string `json:"iconClass"`
Mark      string `json:"mark"`
}

私は変換したい Category このようなJSONに:

{
"id":"",
"deleted":"",
...
"parent":"",
"name":""
}

しかし、私はそれを変換するためにGoのs jsonを使うと、これは私にこれを与える:

{
"Id":"",
"Deleted":"",
...
"parent":"",
"name":"",
...
}

私は今どうすればいい?

私は変換するコードの下で使用する:

// define
var menus []models.Category
// query from db
q.Filter("deleted__exact", false).All(&menus)
// serialize it
res, _ := json.Marshal(&menus)
s := string(res[:])
beego.Debug(s)

回答:

回答№1は0

ここにコンバージョンコードを追加してください。以下のコードは正常に動作します。

type BaseModel struct {
Id          string    `json:"id"`
CreatedTime time.Time `json:"createdTime"`
UpdatedTime time.Time `json:"updatedTime"`
Deleted     bool      `json:"deleted"`
}

type Category struct {
BaseModel
Parent    string `json:"parent"`
Name      string `json:"name"`
IconClass string `json:"iconClass"`
Mark      string `json:"mark"`
}

func main() {
data, err := json.Marshal(Category{})
if err != nil {
return
}

fmt.Println(string(data[:]))
}

出力:

{"id":"","createdTime":"0001-01-01T00:00:00Z","updatedTime":"0001-01-01T00:00:00Z","deleted":false,"parent":"","name":"","iconClass":"","mark":""}