2014-10-07 4 views
6

Я хочу создать строку JSON внутри запроса JSON. Вот мой код,JSON String внутри JSON

Fiddle

JS

var x = { 
    a: 1, 
    b: 'a sample text', 
}; 

var request = { 
    t: JSON.stringify(x), 
    c: 2, 
    r: 'some text' 
}; 

console.log(request); 

Может кто-то помочь мне, как избежать двойные кавычки?

Консоль

Object { 
    t: "{"a":1,"b":"a sample text"}", //This creates a problem, double quotes inside double quotes. 
    c: 2, 
    r: "some text" 
} 

Спасибо заранее.

+1

У вас нет проблем. Если вы выполняете 'JSON.stringify (request)', вы получите совершенно допустимый объект JSON. Вы можете затем «JSON.parse» и подтвердить, что вы возвращаете идентичный объект оригиналу. –

+1

Этот вопрос кажется не по теме, потому что на самом деле проблема здесь отсутствует. –

+0

Правильное экранирование кавычек является проблемой только при использовании строк ** литералов **. Вы должны избегать их, чтобы * parser * понимал, где заканчивается строковое значение. Тем не менее, вы генерируете строку * программно *, парсер больше не участвует в этом вопросе. –

ответ

5

Вот только как консоль браузера показывает значение а string, путем вставки в двойные кавычки для вывода. Это совершенно нормально, и ничего не сломано.

Вы можете проверить это, преобразуя строку JSON обратно в объект и используя свойство.

console.log(JSON.parse(request.t).b); // a sample text 
+0

console.log (JSON.parse (request.t)); должно быть достаточно, если вы строите json внутри другого json. – webjockey

3

Нет проблем. Это всего лишь ваш console.log, который показывает все строки, просто разделив ".

Как вы говорите, это request объект используется в запросе JSON, где он будет JSON.stringify ред другой раз, с действительным результатом

{"t":"{\"a\":1,\"b\":\"a sample text\"}","c":2,"r":"some text"}