コンテキスト:
Go の JSON マーシャリングにより、構造体を JSON オブジェクトに変換できます。デフォルトでは、エクスポートされたすべての構造体フィールドが JSON 出力に含まれます。ただし、空のフィールドは、フィールド タグとして :",omitempty" を指定することで省略できます。
問題:
ネストされた構造体が空の場合 (つまり、ゼロがある場合)すべてのフィールドの値)、:",omitempty" が含まれている場合でも、JSON 出力に表示される可能性があります。 tag.
解決策:
空のネストされた構造体を省略するには、構造体へのポインターを使用する必要があります。そうすることで、ネストされた構造体の空の値は nil ポインターとみなされます。
説明:
Go ドキュメントより:
したがって、ネストされた構造体へのポインターを使用することで、それが考慮されるようになります。空の値なので、:",omitempty" タグが指定されている場合は JSON 出力から省略されます。
例:
type ColorGroup struct { ID int `json:",omitempty"` Name string Colors []string } type Total struct { A *ColorGroup `json:",omitempty"` B string `json:",omitempty"` } // Empty nested struct (zero values) group := Total{ B: "abc", } // Marshal group without nested struct (only "B" field included) b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } os.Stderr.Write(b)
以上がGoのJSONマーシャリングで空のネストされた構造体を省略するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。