我正在编写某种基于 RESTfull API 的对象关系映射器。当我完成它时,我计划使它获得 MIT 许可。这个想法是使用一些 3rd 方 REST API 作为数据存储,golang客户端将查询它所需的数据。API 响应是具有已知结构的 JSON。这是我的代码:type AClient struct { Id string `json:"id"` Uid string `json:"uid"` FirstName string `json:"firstName"` LastName string `json:"lastName"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` City string `json:"city"` Address string `json:"address"` Telefone string `json:"telefone"` Zip string `json:"zip"` Telefon string `json:"telefon"` Comment string `json:"comment"`}type AEvents struct { Id string `json:"id"` Security bool `json:"security"` Description string `json:"description"` Good AGood `json:"good"` Client AClient `json:"client"` Author AAuthor `json:"author"` InFuture bool `json:"inFuture"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"`}type Entry struct { AEvents //this have to be changed to `AClients` in runtime when needed}type ORM struct { ApiUrl string ModelName string ModelInterface Entry HuntKey string HuntSid string Csrf string}func (o *ORM) Query(parameters map[string]string) ([]Entry, AMetadata, error) { responseParsed := struct { Status string `json:"status"` Metadata AMetadata `json:"metadata"` Data []Entry `json:"data"` //todo - use o.ModelInterface }{} client := &http.Client{} var queryString string for k, v := range parameters { queryString = queryString + fmt.Sprintf("%v=%v&", url.QueryEscape(k), url.QueryEscape(v)) }我ORM该如何做到这一点:实例化 对象时,我如何传递结构名称,它将用于解析 JSON 响应。当前代码适用于structof AEvents,但我希望它易于更改AClient等等。UPD:我已经查看了https://github.com/jinzhu/gorm的代码,并找出了很多如何实现它的方法。然后,正如我所承诺的,我将此代码发布为开源 - https://github.com/vodolaz095/hrorm
1 回答
- 1 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消