2010-11-06 3 views
2

Здесь сказано:Экранирование символов в строке JSon

любые кавычки внутри JSON должны быть «сбежал» с обратной косой черты перед. В противном случае, JavaScript запутывается , о которых цитирует мы хотим для отображения и который цитирует являются частью программирования.

, но в их фрагменте кода Я не вижу ни одного экранирующего символа, этот учебник багги Я запутался? :

var movielisttext = "{"movielist": ["Friday the 13th", "Friday the 13th Part 2", "Friday the 13th Part III", "Friday the 13th: The Final Chapter", "Friday the 13th: A New Beginning"]}"; 

Мой вопрос особенно если их статья содержит ошибку или не потому, что меня поражает, что учебник для начинающих может внедрить такую ​​ошибку.

+0

http://stackoverflow.com/questions/2275359/jquery-single-quote-in-json-response –

ответ

3

Что у вас есть JavaScript, а не в формате JSON.

Если вы хотите JSON:

{ 
    "movielist": [ 
     "Friday the 13th", 
     "Friday the 13th Part 2", 
     "Friday the 13th Part III", 
     "Friday the 13th: The Final Chapter", 
     "Friday the 13th: A New Beginning" 
    ] 
} 

Если вы хотите объект JavaScript

var movielisttext = { 
     "movielist": [ 
      "Friday the 13th", 
      "Friday the 13th Part 2", 
      "Friday the 13th Part III", 
      "Friday the 13th: The Final Chapter", 
      "Friday the 13th: A New Beginning" 
     ] 
    }; 

Если вы хотите строку JavaScript, содержащую JSON:

var movielisttext = '{"movielist": ["Friday the 13th","Friday the 13th Part 2","Friday the 13th Part III","Friday the 13th: The Final Chapter","Friday the 13th: A New Beginning"]}'; 

или

var movielisttext = "{\"movielist\": [\"Friday the 13th\",\"Friday the 13th Part 2\",\"Friday the 13th Part III\",\"Friday the 13th: The Final Chapter\",\"Friday the 13th: A New Beginning\"]}"; 

Поскольку сами данные не содержат никаких символов ", их не нужно избегать, насколько это касается JSON.

+0

А что если сами данные содержат «и»? – user310291

+0

Если данные содержат символы '' ', то они необходимо будет избежать. '' 'Не будет, поскольку они не являются разделителями. Если вы хотите использовать это как строку в JS (в соответствии с последним примером), вам нужно будет избежать кавычек (снова), а также избежать (в JS) escape-последовательностей (JSON). – Quentin

2

Поскольку это JavaScript, а не JSON, просто опустить на окружающие кавычки:

var movielisttext = {"movielist": ["Friday the 13th", "Friday the 13th Part 2", "Friday the 13th Part III", "Friday the 13th: The Final Chapter", "Friday the 13th: A New Beginning"]}; 
1

Строка в формате JSON всегда должна быть заключена в двойных кавычках. В этом примере они должны отформатированный JSON как это:

var movielisttext = '{"movielist": ["Friday the 13th", "Friday the 13th Part 2", "Friday the 13th Part III", "Friday the 13th: The Final Chapter", "Friday the 13th: A New Beginning"]}'; 

Но если их намерение состояло в том, чтобы создать литерал объекта Javascript, они должны были использовать:

var movielisttext = {"movielist": ["Friday the 13th", "Friday the 13th Part 2", "Friday the 13th Part III", "Friday the 13th: The Final Chapter", "Friday the 13th: A New Beginning"]}; 

В первом случае, значение из movielisttext является строкой, во втором случае это объект

1
var movielisttext = '{"movielist": ["Friday the 13th", "Friday the 13th Part 2", "Friday the 13th Part III", "Friday the 13th: The Final Chapter", "Friday the 13th: A New Beginning"]}'; 

ИЛИ

var movielisttext = "{\"movielist\": [\"Friday the 13th\", \"Friday the 13th Part 2\", \"Friday the 13th Part III\", \"Friday the 13th: The Final Chapter\", \"Friday the 13th: A New Beginning\"]}"; 

сделать бы трюк.

Смежные вопросы