如何在Go lang中阅读config.json?

时间:2018-02-06 05:17:05

标签: go

我在filLib.go中使用了以下代码:

func LoadConfiguration(filename string) (Configuration, error) {
    bytes, err := ioutil.ReadFile(filename)
    if err != nil {
        return Configuration{}, err
    }

    var c Configuration
    err = json.Unmarshal(bytes, &c)
    if err != nil {
        return Configuration{}, err
    }

    return c, nil
}

但是ioutil.ReadFile(filename)返回* os.PathError。

文件config.json和filLib.go都在同一个文件夹中。

3 个答案:

答案 0 :(得分:4)

*.go文件的路径与正在执行的编译代码的工作目录没有直接关系。验证代码的实际位置(与您认为应该的位置相比)。

import(
  "os" 
  "fmt"
  "log"
)

func main() {
  dir, err := os.Getwd()
  if err != nil {
    log.Fatal(err)
  }
  fmt.Println(dir)
}

答案 1 :(得分:0)

问题可能在于您提供的文件名。下面是适用于我的代码示例。

func loadConfig() {
    var AppConfig Conf
    raw, err := ioutil.ReadFile("conf/conf.json")
    if err != nil {
       log.Println("Error occured while reading config")
       return
    }
    json.Unmarshal(raw, &AppConfig)
}

答案 2 :(得分:0)

我找到了这个图书馆enter link description here

这是一个非常简单易用的配置库,允许Go应用程序使用基于Json的配置文件。配置提供程序从config.json文件读取配置数据。您可以获取配置的字符串值,或通过相关的节名称约定参数将接口绑定到有效的JSON节。 考虑以下config.json文件:

{
  "ConnectionStrings": {
    "DbConnection": "Server=.;User Id=app;Password=123;Database=Db",
    "LogDbConnection": "Server=.;User Id=app;Password=123;Database=Log"
  },
  "Caching": {
    "ApplicationKey": "key",
    "Host": "127.0.01"
  },
  "Website": {
    "ActivityLogEnable": "true",
    "ErrorMessages": {
      "InvalidTelephoneNumber": "Invalid Telephone Number",
      "RequestNotFound": "Request Not Found",
      "InvalidConfirmationCode": "Invalid Confirmation Code"
    }
  },
  "Services": {
    "List": [
      {
        "Id": 1,
        "Name": "Service1"
      },
      {
        "Id": 2,
        "Name": "Service2"
      },
      {
        "Id": 3,
        "Name": "Service3"
      }
    ]
  }
}

以下代码显示了如何访问某些上述配置设置。您可以通过GetSection函数获取配置值,方法是将Json节指定为字符串参数,并以“:”分隔

c, err :=  jsonconfig.GetSection("ConnectionStrings:DbConnection")

任何有效的Json是有效的配置类型。您还可以通过jsonconfig绑定结构。例如,可以将缓存配置绑定到有效的结构:

type Caching struct {
ApplicationKey string
Host           string

}

var c缓存 err = jsonconfig.Bind(&c,“缓存”)