@AndreasN корректен : спецификация JSON диктует использование кавычек для него, чтобы на самом деле быть JSON. Если Вы не используете кавычки, это может быть литерал доступного объекта в JavaScript, но это не JSON. Другие сервисы помимо стороны браузера использование JavaScript, JSON (например, веб-сервисы с помощью php, Java, и т.д.) и если Вы создаете строку, которая испытывает недостаток в кавычках, нет никакой гарантии, что это будет проанализировано правильно - хотя я подозреваю большинство реализаций, были бы достаточно устойчивы, чтобы сделать так.
к вашему сведению опасно в JavaScript непосредственно использовать оценку () на строках JSON из источников, которые Вы не можете предотвратить вредоносные атаки. Снова, посмотрите сайт JSON , который дает больше объяснения, а также очень короткий файл JavaScript, который безопасно анализирует строки JSON в объекты JavaScript.
редактирование: я предполагаю технически, что Ваш исходный вопрос не о JSON, а скорее синтаксисе JavaScript для [1 111] литералы объектов . Различие - то, что объекты, конструируемые от строки JSON, исключат много других возможных литералов объектов, например:
var a = {cat: "meow", dog: "woof"};
var aname = {cat: "Garfield", dog: "Odie"};
var b = {
counter: 0,
pow: function(x) { return x+1; },
zap: function(y) { return (counter += y); }
};
var c = {
all: [a,aname],
animals: a,
names: aname,
};
Литералы объектов "a" и "aname" могут быть выражены в JSON (путем добавления кавычек к именам свойства). Но литералы объектов "b" и "c" не могут. Литерал объектов "b" содержит функции (не позволенный в JSON). Литерал объектов "c" выше содержит ссылки на другие переменные способом, который не является представимым в JSON, потому что некоторые ссылки совместно используются. При внесении изменения в c.names
, оно также изменится c.all[1]
, так как они совместно используют ссылку на ту же переменную. JSON может только выразить объекты, которые имеют древовидную структуру (например, каждый подэлемент полного объекта независим).
Может быть, вы можете использовать ErrorFiltering , чтобы отключить регистрацию электронной почты в Global.asax. Что-то вроде:
void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs e)
{
#if DEBUG
e.Dismiss();
#endif
}
Предположим, у вас другой веб. config для вашей среды разработки и производства, просто отключите Elmah в своем web.config разработки. Вы захотите закомментировать (или удалить) элемент Elmah.ErrorLogModule в разделе httpModules.