保存elasticsearch.配置结构到JSON文件



我想保存一个elasticsearch。配置结构到JSON文件。代码看起来像这样:

package main
import (
"encoding/json"
"fmt"
"github.com/elastic/go-elasticsearch"
"io/ioutil"
)
var EsConfig elasticsearch.Config
func main() {
EsConfig.Addresses = append(EsConfig.Addresses, "http://localhost:9200")
EsConfig.Username = "testuser"
EsConfig.Password = "testpwd"
js, err := json.MarshalIndent(EsConfig, "", " ") //js is nil
if err != nil {
fmt.Printf("After marshalling: %vn", err)
}
err = ioutil.WriteFile("testconfig.json", js, 0644) //output fine is empty
if err != nil {
fmt.Printf("After WriteFile %vn", err)
}
}

然而,js变量总是nil并得到错误封送后:json: unsupported type: func(int) time。持续时间拜托,我错过了什么?

elasticsearch.Config包含导出的RetryBackoff字段,类型为func(int) time.Duration。默认情况下,json.Marshall尝试封送所有导出的字段,由于明显的原因,它无法这样做。
毫无疑问,自定义结构字段封送处理的唯一方法是结构标记,并且您不能将它们添加到另一个包类型中。所以我看到的唯一方法是用elasticsearch.Config的必要字段创建自己的结构,填充然后封送它。

最新更新