[解決済み] Json.Netでシリアライズする際のカスタムDateTimeフォーマットの指定について
質問
ASP.NET Web APIを使用して、あるデータを公開するAPIを開発しています。
あるAPIで、クライアントは日付を
yyyy-MM-dd
の形式を使用します。グローバルな設定(例えば
GlobalConfiguration.Configuration.Formatters.JsonFormatter
というのは、このクライアントに非常に特化しているからです。そして、私は複数のクライアントのためのソリューションでそれを開発しています。
私が思いついた解決策の1つは、カスタムの
JsonConverter
そしてそれをカスタムフォーマットするために必要なプロパティに配置します。
例
class ReturnObjectA
{
[JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime ReturnDate { get;set;}
}
ただ、他に何か簡単な方法はないでしょうか。
どのように解決するのですか?
あなたは正しい道を歩んでいます。 グローバル設定を変更できないとのことですので、次善の策として
JsonConverter
属性は、ご指摘の通り、必要に応じて使用します。 Json.Netには、すでにビルトインの
IsoDateTimeConverter
を使用すると、日付の書式を指定することができます。 残念ながら、書式は
JsonConverter
属性の唯一の引数が型であるためです。 しかし、簡単な解決策があります。
IsoDateTimeConverter
そして、そのサブクラスのコンストラクタで日付の書式を指定します。 サブクラスのコンストラクタに
JsonConverter
属性を必要に応じて設定し、カスタム・コンバータを指定すれば、準備は完了です。 以下は、必要なコードの全体像である。
class CustomDateTimeConverter : IsoDateTimeConverter
{
public CustomDateTimeConverter()
{
base.DateTimeFormat = "yyyy-MM-dd";
}
}
時刻を表示しても構わないのなら、IsoDateTimeConverter をサブクラス化する必要はない。そのデフォルトの日付書式は
yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK
(この例では
ソースコード
).
関連
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C# DateTimeを "YYYYMMDDHHMMSS "フォーマットに変換する。
-
[解決済み] Windowsのコマンドラインで、現在の日付/時刻をファイル/フォルダー名で使用するために適切な形式で取得するにはどうすればよいですか?
-
[解決済み] Json.netでシリアライズする際、プロパティ名を変更するにはどうすればよいですか?
-
[解決済み] PHPでMySQLのdatetimeから別の形式に変換する
-
[解決済み] [Solved] JSON.NETでカスタムJsonConverterを実装する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である