JSONファイルを作成して構造体に解析することにより、Goプログラムを構成しようとしています。
_var settings struct {
serverMode bool
sourceDir string
targetDir string
}
func main() {
// then config file settings
configFile, err := os.Open("config.json")
if err != nil {
printError("opening config file", err.Error())
}
jsonParser := json.NewDecoder(configFile)
if err = jsonParser.Decode(&settings); err != nil {
printError("parsing config file", err.Error())
}
fmt.Printf("%v %s %s", settings.serverMode, settings.sourceDir, settings.targetDir)
return
}
_
Config.jsonファイル:
_{
"serverMode": true,
"sourceDir": ".",
"targetDir": "."
}
_
プログラムはエラーなしでコンパイルおよび実行されますが、printステートメントは以下を出力します。
_false
_
(falseおよび2つの空の文字列)
json.Unmarshal(..)
でも試しましたが、同じ結果になりました。
構造体の値を満たす方法でJSONを解析するにはどうすればよいですか?
構造体要素をエクスポートしていません。それらはすべて小文字で始まります。
var settings struct {
ServerMode bool `json:"serverMode"`
SourceDir string `json:"sourceDir"`
TargetDir string `json:"targetDir"`
}
エクスポートするには、stuct要素の最初の文字を大文字にします。 JSONエンコーダー/デコーダーは、エクスポートされないstruct要素を使用しません。