无法解析有效的json文件

时间:2019-05-11 15:38:25

标签: javascript json ajax

逻辑

我有一个JSON文件,如下所示:

[
    {
        "title":"Article Title 1",
        "url":"https://mywebsite.com/articles/article1.html",
        "type":"codes"
    },
    {
        "title":"Article Title 2",
        "url":"https://mywebsite.com/articles/article2.html",
        "type":"games"
    },
    {
        "title":"Article Title 3",
        "url":"https://mywebsite.com/articles/article3.html",
        "type":"codes"
    }
]

我正在阅读此文件,然后为文件中的每个项目填充html页面(因此,有3个标题,意味着页面上有3个容器)。

问题

以前没有任何错误,但是现在控制台出现错误:*SyntaxError: JSON.parse: expected ',' or ']' after array element at line 12 column 2 of the JSON data*

但是,如果只有2篇文章,那么一切都可以!添加第三个数据集后,出现错误。文件格式似乎正确,在正确的位置有“,”,我将其转换为不同的编码,但存在相同的错误。

代码

主要请求

我正在像这样加载文档时请求JSON文件:

$(document).ready(function(){
    var reqdata = new XMLHttpRequest();
    reqdata.open('GET', "https://website.com/dat/data.json");
    reqdata.onload = function() {
        if (reqdata.status >= 200 && reqdata.status < 400) {
            try{
                var postData = JSON.parse(reqdata.responseText);
                render_posts(postData); // this creates dynamic content in html
                //console.log(postData);
            } catch (err) {
                alert(" JSON Parse Error :'( ")
            }
        } else { alert("JSON Requestion Server Error!") }
    }; reqdata.onerror = function() { alert("JSON Request Connection Error!") };
    reqdata.send();
});

填充HTML

如果JSON.parse有效,则从上面的代码中调用。这部分工作正常,仅供参考。

function render_posts(data) {
    var htmldata = ""; var cardId = "";
    for (var x = 0; x < data.length; x++) {
        cardId = "card-type-" + data[x].type;
        htmldata += "<div class='card' id='" + cardId + "' onclick='card_clicker(\"" + data[x].url + "\")'><div class='header'>" + data[x].title + "</div><div class='decor'></div></div>";
    }
    cardWrapper.insertAdjacentHTML('beforeend', htmldata);
}

帮助:感谢您提供任何帮助。无法弄清真正的问题是什么。 JSON文件看起来不错。我尝试过在线格式化,但结果相同。我是AJAX的新手。在stackoverflow上尝试了其他解决方案,但仍然相同。

2 个答案:

答案 0 :(得分:0)

在某处可能很难注意到多余的字符 要么 使用非标准双引号 要么 其他字符不是您想的那样(逗号?)

答案 1 :(得分:0)

这是JSON解码的一个小的url解码问题。而不是像这样添加网址:

"url":"https://mywebsite.com/articles/article2.html"

必须使用转义符反斜杠,如下所示:

"url":"https:\/\/mywebsite.com\/articles\/article2.html"

现在一切正常!

相关问题