2014-11-22 75 views
2

我有興趣閱讀模式(json格式的文本文件)並將其解組爲模式(爲此我有一些JSON結構定義在.GO文件)對於Schema中的每種類型的結構,我想要生成一個相應的.go文件,其中包含使用模板包(http://golang.org/pkg/text/template/)執行CRUD操作的代碼以生成這些文件。在模式文件結構的使用GO從aa文件中解組JSON內容並使用GO模板包生成.go文件

示例 - {

type struct XYZ { 
    Type   string     `json:"type,omitempty"` 
    ResourceType string     `json:"resourceType,omitempty"` 
    Links  map[string]string  `json:"links,omitempty"` 

} 

The text file has a JSON structured data which is something of this form - 

{ 
     "type": "collection", 
     "resourceType": "schema", 
     "links": { 
     "self": "…/v1/schemas", 
     }, 
     "createTypes": { }, 
     "actions": { }, 
     "data": [ 86 items 
     { 
     "id": "schema", 
     "type": "schema", 
     "links": { 
     "self": "/schemas/schema", 
     "collection": "…/schemas", 
     }, 
     ... 

    } 

}

可能有人幫助我,我怎麼可能產生用於使用GO模板包不同的結構,這些CRUD操作的代碼。

回答

2

您可能會感興趣go generate


proposal: go generate

新增設的圍棋子工具提出了圍棋 1.4。請參閱此主題中的設計文檔和評論。

http://golang.org/s/go1.4-generate

-Rob


Go generate: A Proposal

介紹

的去打造命令自動圍棋程序,但 所以建設需要幾次初步處理,去掉 不支持的處理。激勵的例子包括:

  • YACC:從yacc語法(.Y)產生。去文件文件
  • protobufs:產生.pb.go從協議緩存定義(.proto)文件文件
  • 的Unicode:生成從UnicodeData.txt表
  • HTML:嵌入HTML文件成圍棋源代碼
  • bindata:翻譯二進制文件如JPEG成字節數組在Go源

還有其他處理步驟可以想見:

  • 字符串方法:爲作爲枚舉常數
  • 宏類型生成字符串()字符串方法:產生給定的廣義包定製實現方式中,如從sort.Ints整數

本提案提供了一種用於這種處理的平滑自動化的設計。

+0

我用來在GO中模板包來生成代碼。我必須先自己編寫一個模板,並使用模板語法替換需要通用的內容,如{{schema.ID }}。當程序像這樣運行並使用os.Create(schema.ID +「.go」)時,它會生成帶有模式名稱的.GO文件。 – psbits 2014-11-25 01:10:53