使用GO从文件解组JSON内容并使用GO模板包生成.go文件

时间:2014-11-22 02:42:48

标签: json go go-templates

我有兴趣阅读模式(json格式的文本文件)并将其解组为模式(我在.GO文件中定义了一些JSON结构)并且对于模式中的每种类型的结构,我想生成相应的.go文件,其中包含使用模板包(http://golang.org/pkg/text/template/)执行CRUD操作的代码,以生成这些文件。

模式文件中的结构示例 - {

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操作的代码。

1 个答案:

答案 0 :(得分:2)

您可能会发现go generate有用。


  

proposal: go generate

     

针对Go提出的新go工具子命令   1.4。请参阅此主题中的设计文档和评论。

     

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

     

-Rob


  

Go generate: A Proposal

     

简介

     

go build命令可以自动构建Go程序,但是   有时候需要进行初步处理,然后进行处理   不支持。激动人心的例子包括:

     
      
  • yacc:从yacc语法(.y)文件生成.go文件
  •   
  • protobufs:从协议缓冲区定义(.proto)文件生成.pb.go文件
  •   
  • Unicode:从UnicodeData.txt生成表
  •   
  • HTML:将.html文件嵌入Go源代码
  •   
  • bindata:将诸如JPEG之类的二进制文件转换为Go source
  • 中的字节数组   
     

可以想象出其他处理步骤:

     
      
  • 字符串方法:为用作枚举常量的类型生成String()字符串方法
  •   
  • 宏:在给定通用包的情况下生成自定义实现,例如来自ints的sort.Ints
  •   
     

该提案提供了一种平滑自动化设计   处理