Golang で JSON にマーシャリングするときに time.Time レイアウトをカスタマイズするにはどうすればよいですか?
Nov 03, 2024 am 03:55 AMJSON マーシャリング用の Time.Time レイアウトのカスタマイズ
Golang のエンコーディング/json パッケージでは、time.Time 値のデフォルトのレイアウトは「2006」です。 -01-02T15:04:05Z」。ただし、カスタム書式文字列を使用するようにこのレイアウトをオーバーライドすることは可能です。
解決策:
time.Time フィールドの json.Marshal で使用されるレイアウトをオーバーライドするにはでは、time.Time を埋め込み、MarshalText インターフェイスを実装する新しい型を定義できます。このインターフェイスは、値のバイト表現を返すメソッドを定義します。以下のコードは、これを実現する方法を示しています。
<code class="go">package main import ( "encoding/json" "fmt" "time" ) type jsonTime struct { time.Time f string } func (j jsonTime) format() string { return j.Time.Format(j.f) } func (j jsonTime) MarshalText() ([]byte, error) { return []byte(j.format()), nil } func (j jsonTime) MarshalJSON() ([]byte, error) { return []byte(`"` + j.format() + `"`), nil } func main() { jt := jsonTime{time.Now(), time.Kitchen} x := map[string]interface{}{ "foo": jt, "bar": "baz", } data, err := json.Marshal(x) if err != nil { panic(err) } fmt.Printf("%s", data) }</code>
このコードでは、jsonTime 構造体に time.Time 値が埋め込まれ、指定されたレイアウトを使用して時間を文字列として返すカスタム format() メソッドが定義されています。 。また、JSON マーシャリング中にカスタム文字列表現を返す MarshalText インターフェイスと MarshalJSON インターフェイスも実装します。
このアプローチを使用すると、JSON 出力の time.Time 値に使用されるレイアウトを制御し、特定の内容に従ってカスタマイズできます。要件。
以上がGolang で JSON にマーシャリングするときに time.Time レイアウトをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?
