Вопрос по javascript, json – Разбор JSON со специальными символами

1

Я использую flot для построения графиков, и у меня возникают проблемы с передачей tickSize моему json. Я использую MVC и передаю JSON в модели. Вот некоторый код для захвата JSON в моей функции JavaScript:

<code>var json = '<%=Model.Json %>';
var data = jQuery.parseJSON(json);
</code>

Вот как выглядит Json, покидая контроллер:

<code>{\"GraphData\":[{\"X\":1333929600000,\"Y\":0.0},{\"X\":1333670400000,\"Y\":0.46}],\"Max\":1333324800000,\"Min\":1333929600000,\"TickSize\":\"[1, 'day']\"}
</code>

Часть, с которой у меня возникают проблемы, это "TickSize". Как вы можете видеть, "[1," день "]" имеет квадратные скобки. Я думаю, что есть некоторая проблема с анализом, потому что [] обычно означает массив. Флот хочет размер тика в этом формате. Как мне построить свой Json, чтобы я мог взять TickSize?

Я думаю, что TickSize считается строкой, а не массивом в JSON, потому что он заключен в кавычки. Если бы он не был в кавычках, это был бы массив. stevebot

Ваш Ответ

3   ответа
0

' вместо того". Это приводит к завершению строки с вашим первым'.

Перепишите свою первую строку как

var json = "<%=Model.Json %>";
0

Решение замените одиночную обратную косую черту '\' двойной '\\' обратной косой чертой.
Для символа новой строки '\ n' до '\\ n'
Работает с подсказками

1

поскольку вы также пытаетесь заключить в них строку 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("'", "\\'") %>';
Или используйтеJSON.stringify(<%= HttpUtility.JavaScriptStringEncode(Model.Json, addDoubleQuotes: true) %>). Jesper

Похожие вопросы