Відповідно до діаграми стану машини на веб-сайті JSON , допускаються лише символи подвійної цитати, а не одноцитати. Символи однієї цитати не потрібно уникати:

Оновлення - Більше інформації для зацікавлених:
Дуглас Крокфорд конкретно не говорить, чому специфікація JSON не дозволяє уникнути одинарних лапок у рядках. Однак під час свого обговорення JSON у Додатку E JavaScript: "Гарні частини" він пише:
Цілі дизайну JSON повинні були бути мінімальними, портативними, текстовими та підмножиною JavaScript. Чим менше нам потрібно узгодити для взаємодії, тим легше ми можемо взаємодіяти.
Тому, можливо, він вирішив дозволити визначати лише рядки за допомогою подвійних лапок, оскільки це одне менше правило, з яким повинні погоджуватися всі реалізації JSON. Як результат, неможливо, щоб один символ цитата в рядку випадково припинив рядок, оскільки за визначенням рядок може бути припинений лише символом подвійної лапки. Отже, не потрібно допускати виходу одного символу цитати у формальній специфікації.
Риття трохи глибше, Крокфорд в
org.json реалізація JSON для Java є більш допустимим і
робить дозволяють одиничні лапки:
Тексти, створені методами toString, суворо відповідають правилам синтаксису JSON. Конструктори прощають текст, який вони приймуть:
...
- Рядки можуть бути цитовані з "(одна ціна).
Це підтверджується вихідним кодом JSONTokener . nextStringМетод приймає врятувався одиничні лапки і відносяться до них так само , як подвійні лапки:
public String nextString(char quote) throws JSONException {
char c;
StringBuffer sb = new StringBuffer();
for (;;) {
c = next();
switch (c) {
...
case '\\':
c = this.next();
switch (c) {
...
case '"':
case '\'':
case '\\':
case '/':
sb.append(c);
break;
...
Вгорі методу - інформативний коментар:
Формальний формат JSON не дозволяє рядки в одиничних лапках, але реалізація може їх приймати.
Тож деякі реалізації приймуть одинарні котирування, але не варто покладатися на це. Багато популярних реалізацій є доволі обмежуючими в цьому відношенні і відкидають JSON, що містить поодинокі цитовані рядки та / або уникнуті поодинокі лапки.
Нарешті, щоб зв'язати це з початковим питанням, jQuery.parseJSONспочатку намагаються використовувати вбудований аналізатор JSON браузера або завантажену бібліотеку, таку як json2.js, де це можливо (на бічній примітці - бібліотеці, на якій заснована логіка jQuery, якщо JSONне визначено) . Таким чином, jQuery може бути настільки ж дозвільним, як і основна реалізація:
parseJSON: function( data ) {
...
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}
...
jQuery.error( "Invalid JSON: " + data );
},
Наскільки мені відомо, ці реалізації відповідають лише офіційній специфікації JSON і не приймають одинарних лапок, отже, і jQuery.