web-dev-qa-db-ja.com

MVC 4でオブジェクトをJSONに変換する

JavaScriptSerializerを使用してオブジェクトをJSONに変換していますが、サーバーコードでこのJSON出力を確認できます。

[{"UserId":1,"UserName":"Admin"}]

しかし、UIでは以下のようなものに変換されています

[{"UserId":1,"UserName":"Admin"}].

それらをエスケープする方法"

30
user1735105

Razorビューエンジンを使用している場合は、_Html.Raw_メソッドを使用する必要があります。

_<script type="text/javascript">
    var model = @Html.Raw(Json.Encode(Model));
</script>
_

より短く、new JavaScriptSerializer().Serialize()と同等の_Json.Encode_メソッドの使用に注意してください。

69
Darin Dimitrov

どうしてそんなことをするのか?なぜ JsonResult を返さないのですか?

public ActionResult MyMethod()
{
    List<ListItem> list = new List<ListItem>() {
        new ListItem() { UserId = "1", UserName = "Admin" },
        new ListItem() { UserId = "2", UserName = "JohnDoe" },
        new ListItem() { UserId = "3", UserName = "JaneDoe" }};

    return this.Json(list);
}
22

ダリン・ディミトロフの答えについてもう一つだけ。私のVS2012では、セミコロンにコンパイルエラーがあります。JS側からのステートメントは実際には「var model =;」だからです。一対の引用を使用して、Razor部分を次のようにラップする方法:

var model = "@Html.Raw(Json.Encode(Model))";

これによりエラーは発生しません。

Json.Encode()はJavaScriptSerializerのラッパー関数のようです。後者の方が時間効率が良いかどうかはわかりません。

0
Fenwick