Go で JSON ファイルをオブジェクトとして読み取る
Go では、JSON ファイルを読み取り、オブジェクトとして解析しようとすると問題が発生することがあります。 JSON オブジェクト。
失敗しました試行
JSON ファイルをオブジェクトとして読み取る試みの失敗例には次のものがあります:
plan, _ := ioutil.ReadFile(filename) // filename is the JSON file to read var data interface{} err := json.Unmarshal(plan, data)
これにより、「json:」というエラーが発生します。 Unmarshal(nil)".
generatePlan, _ := json.MarshalIndent(plan, "", " ") // plan is a pointer to a struct
これは文字列出力を生成しますが、それを文字列にキャストすると、 JSONとしてループスルーすることは不可能object.
解決策
この問題を解決する鍵は、json.Unmarshal が指す値にあります。ポインタである必要があります。
plan, _ := ioutil.ReadFile(filename) var data interface{} err := json.Unmarshal(plan, &data)
型アサーション
アンマーシャルで空のインターフェイスを使用する場合、ネイティブ Go として基になる値を取得するには型アサーションを使用する必要があります。タイプ:
bool, for JSON booleans float64, for JSON numbers string, for JSON strings []interface{}, for JSON arrays map[string]interface{}, for JSON objects nil for JSON null
ベスト実践
Unmarshal を使用して JSON データを設定するには、具体的な構造を使用することを強くお勧めします。これにより、より明確になり、型アサーションの必要性が回避されます。
以上がGo で JSON ファイルをオブジェクトとして読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。