3

クライアント側にJSONオブジェクトがあり、サーバー側に戻したいと思っています。
そうするために、私は自分のオブジェクトの文字列化されたバージョンを置く隠し場所を持っています。

$("#<%=hidden.ClientID%>").val(JSON.stringify(obj));

次に、サーバー側で、JavaScriptSerializerを使用して逆シリアル化しようとします。

私の問題:文字列化されたオブジェクトに日付が含まれていて、deJavaScriptSerializerで解析できません。
私がしたこと:.Net形式に合うように日付形式を変更します:

function FormatDate(date) {
    if (typeof (date.getTime) != "undefined") {
        return '\\/Date(' + date.getTime() + ')\\/'
    }

    return date;
}

これは良いフォーマットを与えるようですが、適切にフォーマットされた日付を持つオブジェクトでJSON.stringifyを使用すると、余分なバックスラッシュが追加されるため、JavaScriptSerializerはそれを取得できません。

隠し場所で有効な形式でそれを取得する方法について何かアイデアはありますか?

4

3 に答える 3

1

以下のコードを使用して、シリアル化後にデータを修正します。

var data = JSON.stringify(object);
data = data.replace(/\\\\/g, "\\");
于 2012-11-16T07:35:22.513 に答える
1

古い質問ですが、解決策を探している私のように誰かがここに到着した場合、これが機能することがわかりました: https://stackoverflow.com/a/21865563/364568

function customJSONstringify(obj) {
    return JSON.stringify(obj).replace(/\/Date/g, "\\\/Date").replace(/\)\//g, "\)\\\/")
}
于 2016-05-11T13:55:47.033 に答える
1

私は同じ問題を抱えていました

'\/Date(' + date.getTime() + ')\/';

私のために働きます。バックスラッシュが 1 つだけではなく、バックスラッシュが 2 つあるだけです。

于 2012-06-27T13:50:36.573 に答える