2014-11-22 42 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