簡體   English   中英

JSON中的特殊字符破壞了JS

[英]Special characters in JSON are breaking JS

在ASP MVC控制器中,我創建了一個ViewBag變量,其中包含要在頁面上加載的項目列表:

    public ActionResult Items()
    {
        ViewBag.itemList = Repo.GetItems(); // Returns list of Items
        return View("Items");
    }

在頁面一側,我正在解析此數據:

@{
Newtonsoft.Json.JsonSerializerSettings jsonSettings = new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() };
var jsonData = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented, jsonSettings));
var serial = new System.Web.Script.Serialization.JavaScriptSerializer();
var items = serial.Serialize(ViewBag.itemList);
}

在我的Knockout加載函數中,我分析了列表並刪除了破壞JSON.parse()函數的換行符。

self.load = function () {
var itemsEscaped = '@Html.Raw(items.Replace("'", "\\'"))'.replace("\n", "\\n");
var someItems = JSON.parse(itemsEscaped);
ko.mapping.fromJS(someItems, self.itemMapping, self.someItems);
}

但是,其他特殊字符有時會破壞JSON.parse()函數。 有沒有辦法在JS端的控制器上將它們過濾掉?

您可以將其作為對JavaScript請求到服務器的響應,而不是直接將JSON寫入頁面的HTML。

但是,如果您想直接在cshtml中編寫它,請看一下這篇文章: 如何使用Razor將未編碼的Json寫入View? ,其中顯示了如何將未編碼的JSON打印到頁面上,其中某些特殊字符已編碼,不會引起進一步解析的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM