2015-04-15 81 views
1

我從字符串格式的JSON中得到以下響應,並且裏面有一個數組。如何從字符串中提取數組作爲JSON響應

"["Password first character can not be blank", "Current password can't be blank"]"

我試圖通過使用下面的方法來提取所需的我的陣列對象。

errorMessages = "["Password first character can not be blank", "Current password can't be blank"]" 
jQuery.parseJSON(errorMessages) 

但它不適合我,任何人都可以幫我嗎?

預先感謝您。

+0

你可以試試這個'JSON.parse(errorMessages.replace(/ " /克,「 ''));!' – renakre

+0

@erkaner,喔...謝謝你這麼多不過,這只是方式。或任何直接的方法可用在jQuery?你可以建議你知道任何? – VenkatK

+0

實際的數據來自一個紅寶石對象權限。你可以嘗試obj.html_safe或JSON.parse(obj)對紅寶石對象本身 –

回答

1

你用JSON.stringify來得到你的json對象嗎? JSON.stringify可以防止"

如果仍然有問題,你可能只是與"

JSON.parse(errorMessages.replace(/"/g,'"')); 
+0

這應該可行,但這是一個很難的方法,如果OP傳遞這樣一個字符串,那麼所有的特殊字符都會有這種格式,解析所有這些? – Alexey

2

更換"除非你能在某種程度上傳遞數據JS可以轉換成JSON,你必須使用這個:

我認爲最好的方法是使用瀏覽器的內置HTML轉義 功能來處理很多情況。爲此,只需在DOM樹中創建一個 元素,並將元素的innerText設置爲 字符串。然後檢索元素的innerHTML。瀏覽器將 返回一個HTML編碼的字符串。

function HtmlEncode(s) 
{ 
    var el = document.createElement("div"); 
    el.innerText = el.textContent = s; 
    s = el.innerHTML; 
    return s; 
} 

試運行:

alert(HtmlEncode('&;\'><"')); 

輸出:

&amp;;'&gt;&lt;" 

逃逸HTML的這種方法也使用原型JS庫 雖然不同於簡單的示例中,我已經給。

注意:您仍然需要自行轉義引號(雙號和單號) 。您可以使用這裏其他人列出的任何方法。

引自:Cerebrus' answer

0

顯然,你正在用的htmlspecialchars()輸出工作。你可以使用這個簡單的函數首先對它進行解碼並將其解析爲一個數組。所以,整個功能會是這樣的。

var errorMessages = '[&quot;Password first character can not be blank&quot;, &quot;Current password can&#39;t be blank&quot;]'; 

function decodehtml(text) { 
    return text 
     .replace(/&amp;/g, "&") 
     .replace(/&lt;/g, "<") 
     .replace(/&gt;/g, ">") 
     .replace(/&quot;/g, '"') 
     .replace(/&#39;|&#039;/g, "'"); 
} 

var errorArray = JSON.parse(decodehtml(errorMessages));