Go で JSON を構造体に解析する
JSON を Go 構造体に解析しようとすると、予期しない出力が発生します: 空の構造体の値および false のブール値。デフォルトでは、エンコーダー/デコーダーで認識されるように、構造体フィールドをエクスポートする必要があります (大文字で始まる)。コードの改訂版は次のとおりです。
// Define your struct with exported fields type Settings struct { ServerMode bool `json:"serverMode"` SourceDir string `json:"sourceDir"` TargetDir string `json:"targetDir"` } func main() { // Open the config file configFile, err := os.Open("config.json") if err != nil { printError("opening config file", err.Error()) } jsonParser := json.NewDecoder(configFile) settings := Settings{} // Initialize the struct // Decode the JSON if err = jsonParser.Decode(&settings); err != nil { printError("parsing config file", err.Error()) } fmt.Printf("%v %s %s", settings.ServerMode, settings.SourceDir, settings.TargetDir) }
これらの変更により、エンコーダー/デコーダーは構造体のフィールドに適切にアクセスして変更できるようになり、目的の解析値が得られます。
以上がJSON を解析すると Go 構造体のフィールドが空になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。