[英]Parsing JSON with special characters
我正在使用 flot 做一些繪圖,我在通過我的 json 傳遞 tickSize 時遇到了一些問題。我正在使用 MVC 並在 model 中傳遞 json。這里有一些代碼可以在我的 javascript 08658904 中獲取 json
var json = '<%=Model.Json %>';
var data = jQuery.parseJSON(json);
這是 Json 離開 controller 的樣子:
{\"GraphData\":[{\"X\":1333929600000,\"Y\":0.0},{\"X\":1333670400000,\"Y\":0.46}],\"Max\":1333324800000,\"Min\":1333929600000,\"TickSize\":\"[1, 'day']\"}
我遇到麻煩的部分是“TickSize”。 如您所見,“[1, 'day']”帶有方括號。 我認為存在一些解析問題,因為 [] 通常表示數組。 Flot 需要這種格式的刻度大小。 如何構建我的 Json 以便獲取 TickSize?
問題是字符串值中的單引號,因為您也試圖將 JSON 字符串包含在其中。 結果 JavaScript 將被(截斷):
var json = '...,\"TickSize\":\"[1, 'day']\"}';
由於現在有 4 個單引號, day
實際上不是字符串的一部分並會產生語法錯誤。
但是,您甚至不需要引用和解析 JSON,因為它源自 JavaScript 語法:
var data = <%= Model.Json %>;
如果您需要字符串表示,您可以在 JavaScript 中將其字符串化:
var json = JSON.stringify(data):
或者在字符串服務器端轉義單引號:
var json = '<%= Model.Json.Replace("'", "\\'") %>';
這是因為您用'
而不是"
包圍了字符串。這導致字符串以您的第一個'
終止。
將第一行重寫為
var json = "<%=Model.Json %>";
解決方案:將單反斜杠“\”替換為雙“\\”反斜杠。
對於換行符 '\n' 到 '\\n'
適用於工具提示消息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.