Golang:json文件中的路由器配置

时间:2016-07-12 06:37:39

标签: json go

我想把我的路由器配置放在extern json配置文件中,如下所示:

<div class="col-md-9">
     <h1>Header</h1>
     <h3>Ipsum Industries Subheader</h3>
     <p>This is the left column text</p>
</div>
<div class="col-md-3">
     <h1>&nbsp;</h1>
     <h3>&nbsp;</h3>
     <p>This is where I want the text to constantly be next to the <p> element in the left column</p>
</div>

我的相关结构看起来像这样:

{
  "routes": [
    {
      "name": "Index",
      "method": "GET",
      "pattern": "/",
      "handler": "Index"
    },
    {
      "name": "CountsIndex",
      "method": "GET",
      "pattern": "/counts",
      "handler": "CountsIndex"
    }
  ]
}

问题是handlerFunc。当我得到配置它将是一个字符串,但如何使它成为一个值?我可以以某种方式投出它吗?

发生以下错误:

  

json:无法将字符串解组为http.HandlerFunc类型的Go值

由于

2 个答案:

答案 0 :(得分:4)

最简单的解决方案是使用字符串而不是http.HandlerFunc作为类型,并使用函数定义一个映射。

var functions = map[string]interface{}{
    "func1": func1,
}

然后在解组你的json之后你可以使用每个路由的handlername分配处理程序

答案 1 :(得分:2)

问题是,并非每个数据都可以封送到json(或解组)。 http.HandlerFunc不是函数(https://golang.org/pkg/net/http/#HandlerFunc)。你不能直接把它 - 但你可以把处理程序更改为字符串,当你试图调用它时,从反射(一个非常复杂的)或准备好的地图[string] HandlerFunc获取HandlerFunc。