如何从作为JSON响应的字符串中提取数组

时间:2015-04-15 13:02:02

标签: jquery 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 )

但这对我不起作用,有人可以帮助我吗?

提前谢谢。

3 个答案:

答案 0 :(得分: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的方法也被Prototype JS库使用   虽然不同于我给出的简单样本。

     

注意:您仍然需要转义引号(双引号和单引号)   你自己。您可以使用其他人概述的任何方法。

引自:Cerebrus' answer

答案 1 :(得分:1)

您是否使用JSON.stringify来获取json对象? JSON.stringify可能会阻止&quot;

如果您仍有问题,可以将&quot;替换为"

JSON.parse(errorMessages.replace(/&quot;/g,'"'));

答案 2 :(得分: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));