8

を使用して DateTime プロパティを含むオブジェクトを返す場合

return Json(value);

私が受け取るクライアントで

"/Date(1336618438854)/"

を使用して同じ値を返す場合

return Json(JsonConvert.SerializeObject(value));

返されたシリアル化された値 (シリアル化されたオブジェクトと共に) は、タイム ゾーンに対応しています。

"/Date(1336618438854-0400)/"

二重シリアル化なしで一貫した DateTime 結果を取得する方法はありますか? MS が Newtonsoft JSON を MVC に含めることをどこかで読みましたか?

4

4 に答える 4

11

私は最終的に何をすべきかを理解しました。
プロジェクトを ISO 8601 DateTime 形式に切り替えます。オブジェクトの datetime プロパティを JsonConverter 属性で装飾するだけで、JSON.net でシリアル化が適切に行われます。

    public class ComplexObject 
    {
        [JsonProperty]
        public string ModifiedBy { get; set; }
        [JsonProperty]
        [JsonConverter(typeof(IsoDateTimeConverter))]
        public DateTime Modified { get; set; }
        ...
     }

シリアル化されたオブジェクトをクライアントの ajax 呼び出しに返すには、次のようにします。

    return Json(JsonConvert.SerializeObject(complexObjectInstance));

そしてクライアント上で:

    jsObject = JSON.parse(result)

デフォルトの ASP.NET MVC デフォルト JSON シリアライザーを Newtonsoft JSON.net ISO 8601 シリアライゼーションにオーバーライドするのはおそらく簡単だと考えています。はい、原則はこのスレッドに似ているはずです: Change Default JSON Serializer Used In ASP MVC3

于 2012-05-12T18:41:24.310 に答える
-2

サーバーの日付形式を返します。独自の関数を定義する必要があります。

function jsonDateFormat(jsonDate) {

// Changed data format;
return (new Date(parseInt(jsonDate.substr(6)))).format("mm-dd-yyyy / h:MM tt");

};

于 2013-02-25T07:43:59.377 に答える
-2

JSONで解析するよりも、単に日付を文字列に変換するよりも、解析のことを掘り下げたくない場合。

例えば

return Json(DateTime.Now.ToString("your date format if you want to specify"));
于 2012-05-10T06:11:43.867 に答える