Time.Time を使用した送信 JSON のタイムスタンプの書式設定
Go では、JSON 応答の一部として time.Time 型を送信するときに、タイムスタンプをデフォルトの ISO 8601 形式ではなく、希望の形式にフォーマットすることが望ましい場合がよくあります。これを実現するには、次の手法を使用できます。
カスタム マーシャリングとアンマーシャリング
Marshall インターフェイスをカスタム タイプで実装して、JSON 表現を決定できます。同様に、Unmarshaler インターフェイスを使用して、JSON データをカスタム タイプに解析することを制御できます。 time.Time については、MarshalJSON を実装する JSONTime タイプを定義します。
type JSONTime time.Time func (t JSONTime) MarshalJSON() ([]byte, error) { // Format the time in the desired format stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("Mon Jan _2")) return []byte(stamp), nil }
ドキュメント タイプの更新
ドキュメント タイプで、スタンプ フィールドを変更します。 JSONTime に入力します:
type Document struct { ... Stamp JSONTime ... }
例使用法
テスト ドキュメントを初期化するとき:
testDoc := model.Document{ ... Stamp: JSONTime(time.Now()), ... }
タイムスタンプは、JSON としてエンコードされるときに指定された形式に従ってフォーマットされます:
{ ... "Stamp": "May 15, 2014" ... }
このアプローチにより、JSON 応答でのタイムスタンプのフォーマット方法に柔軟性と制御が提供され、特定の要件に応じたカスタマイズが可能になります。
以上がGo の JSON 応答でタイムスタンプの形式をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。