14

ASP MVC 4 をインストールしたばかりですが、JSON の日付がまだ古い形式で返されます{"timestamp":"\/Date(1348070400000)\/"}

私が何もしなくても、彼らはフォーマットに戻ってくるべきだという印象を受けました。2012-02-18T00:54:06.8447642Z

注: JSON.NET は現在、ASP.NET Web API の不可欠な部分であるため、すぐに使用できます。

私のコントローラーは次のようになります

public JsonResult Test()
{
    return Json(new {timestamp = DateTime.Now()}, JsonRequestBehavior.AllowGet);
}

どうすればこれを機能させることができますか? Global.asax.cs または Web.config を変更する必要がありますか?

4

1 に答える 1

22

私が何もしなくても、2012-02-18T00:54:06.8447642Z の形式で戻ってくるはずだという印象を受けました。

これは、ASP.NET Web API (ApiControllers) にのみ当てはまります。ただし、JsonResults を返す標準の ASP.NET MVC コントローラー アクションは引き続きJavaScriptSerializer. したがって、ISO 8601 の日付を使用する場合は、カスタム アクションの結果を記述することで、JSON.NET でこのシリアライザーを交換できます。シリアライザーが使用する設定に適切なコンバーターを追加するだけです。

SerializerSettings.Converters.Add(new IsoDateTimeConverter());

なぜ標準コントローラー用に JSON.NET を実装しなかったのかと疑問に思われるかもしれません。これは重要な破壊的変更になるため、互換性の理由によるものだと思います。しかし、おそらく、JSON.NET をデフォルトのシリアライザーにして、既存のアプリケーションをアップグレードするためのフォールバック オプションを用意していたでしょう。

于 2012-09-20T06:08:33.080 に答える