2014-10-07 111 views
6

我想在JSON請求中創建JSON字符串。這裏是我的代碼,JSON中的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',並確認你找回了一個與原始相同的對象。 – 2014-10-07 14:57:35

+1

這個問題似乎是無關緊要的,因爲這裏實際上沒有問題。 – 2014-10-07 14:57:56

+0

使用字符串**文字**時,恰當地轉義引號是一個問題。您必須將它們轉義,以便* parser *理解字符串值結束的位置。但是,您正在以編程方式生成字符串*,此時解析器不再涉及。 – 2014-10-07 15:01:57

回答

5

這僅僅是瀏覽器控制檯顯示你的價值的方式字符串,通過用雙引號包裝輸出。這是完全正常的,沒有什麼是壞的。

您可以通過將JSON字符串轉換回對象並使用屬性來測試它。

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

console.log(JSON.parse(request.t));如果你正在另一個json中創建一個json,那就足夠了。 – webjockey 2016-11-03 17:31:06

3

沒有問題。這只是你的console.log,通過簡單地與"分隔來顯示所有字符串。

至於你說的這個request對象是JSON請求,它會JSON.stringify ED另一次使用,有效的結果

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