簡體   English   中英

解析帶有特殊字符的 JSON

[英]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.

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