【问题标题】:Remove a line from JSON parse从 JSON 解析中删除一行
【发布时间】:2018-01-17 17:54:38
【问题描述】:

我正在使用 JIVE JSON RESTFul API,在他们的 API 上他们有安全性

(我指的是 throw 'allowIllegalResourceCall is false.';)

throw 'allowIllegalResourceCall is false.';
{
  "id" : "52104", 
}

我正在使用这段代码来尝试解析它:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {   
        var myObj = JSON.parse(this.responseText);
        document.getElementById("topdisplay").innerHTML = myObj.id;
    }    
};
xmlhttp.open("GET", "http://mysite/API/",true);
xmlhttp.send();

由于那条起跑线,我收到了一个错误。 我到处寻找解决方案来跳过 JSON PARSE 的工作,但我似乎找不到可行的方法。

我也知道解析代码可以正常工作,因为当我删除第一行时,它可以正常工作。

有什么帮助吗?

【问题讨论】:

  • JSON.parse 与字符串中的对象一起使用,如下所示:"{ channel: "irc" }",您可以在此处粘贴 JSON 文件吗?
  • @akinjide 阅读问题...显示响应
  • 明白了。 @Darky 在下面查看我的答案

标签: javascript jquery json parsing jive


【解决方案1】:

JIVE REST API 引入了此功能,以帮助防止在 Web 浏览器易受攻击时返回 JSON 劫持。

您需要先找到{,然后从该位置到字符串末尾创建一个子字符串。

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {

    if (this.readyState == 4 && this.status == 200) {   
        var response = this.responseText
                var myObj = JSON.parse(this.responseText.substring(this.response.indexOf('{')));

        document.getElementById("topdisplay").innerHTML = myObj.id;
    }    
};

xmlhttp.open("GET", "http://mysite/API/",true);
xmlhttp.send();

注意:

使用 RegEx,您需要找到第一行以 throw 结尾并以分号结尾的行,如果找到则替换为空字符串。

JSON.parse(response.replace(/throw.*;/, "").trim());

【讨论】:

  • 我将这一行改为:var myObj = JSON.parse(this.responseText.substring(this.response.indexOf('{')));
  • 虽然为了可读性,您应该将 XHR 响应分配给一个变量。 :酷:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多