2013-03-20 67 views
3

我試圖解析JSON字符串,我不能得到它,因爲非法chracters的工作 - 我無法找到...如何在存儲爲Javascript變量的HTML字符串中轉義JSON?

以下是我有:

make = function (el) { 
    var config = el.getAttribute("data-config"); 
    console.log(config); 
    var dyn = $.parseJSON(config) 
    console.log(dyn); 
} 

var a= document.createElement("<a href='#' class='template' data-config=\"{'role':'button','iconpos':'left','icon':'star','corners':'false','shadow':'false', 'iconshadow':'false', 'theme':'a','class':'test', 'href':'index.html','text':'Star Icon', 'mini':'true', 'inline':'true'}\">Star Icon</a>"); 
console.log(a); 
make(a); 

我我真的不知道如何正確地使用原始字符串「a」來使用JSON,以便它能夠正常工作。

問題:
我需要哪些引號才能讓它起作用?

謝謝!

編輯:

確定。我想通過使用Jquery(我更喜歡使用Javascript)。這工作:

make = function (el) { 
    var config = el.attr("data-config"); 
     console.log(config); 
    var dyn = $.parseJSON(config) 
     console.log(dyn); 
} 

var c = $('<a href="#" class="template" data-config=\'{"role":"button","iconpos":"left","icon":"star","corners":"false","shadow":"false", "iconshadow":"false", "theme":"a","class":"test", "href":"index.html","text":"Star Icon", "mini":"true", "inline":"true"}\'>Star Icon</a>') 
console.log(c); 
make(c); 

所以逃避JSON字符串的開始/結束的報價,似乎這樣的伎倆。實際的問題是我不能使用完整字符串document.createElement。我只能創建元素document.createElement(a),然後設置innerHTML。需要更多地瞭解這一點。

如果有人能告訴我一個Javascript的唯一途徑是如何做到這一點,請讓我知道。

謝謝!在屬性

+0

您可以使用該網站來驗證您的JSON:http://jsonlint.com/會告訴你,如果你有任何非法字符或不正確的標記 – 2013-03-20 19:56:15

+0

我覺得你的單引號需要用雙引號 – 2013-03-20 19:57:41

+0

我知道Jsonlint。問題是,它抱怨兩個引號。沒有他們,JSON是正確的,但HTML語法是錯誤的。 – frequent 2013-03-20 19:58:15

回答

7

Strings and object keys in JSON must be double quoted.雙引號是無效的,所以你需要escape them with &quot;

此外,你可能想要使用布爾型true/false而不是字符串"true"/"false"

var a = document.createElement('<a href="#" class="template" data-config="{&quot;role&quot;:&quot;button&quot;,&quot;iconpos&quot;:&quot;left&quot;,&quot;icon&quot;:&quot;star&quot;,&quot;corners&quot;:false,&quot;shadow&quot;:false,&quot;iconshadow&quot;:false,&quot;theme&quot;:&quot;a&quot;,&quot;class&quot;:&quot;test&quot;, &quot;href&quot;:&quot;index.html&quot;,&quot;text&quot;:&quot;Star Icon&quot;, &quot;mini&quot;:true,&quot;inline&quot;:true}\">Star Icon</a>'); 

注意,這是完全不可讀和@millimoose's suggestion about just setting the attribute afterwards將在長期內使這更容易對付。

+0

確定。不知道。試。 – frequent 2013-03-20 20:00:56

相關問題