为什么这个JSON文件扼杀了

时间:2017-03-01 09:19:20

标签: javascript json

我这里有一个JSON文档。我已使用JSlint验证了它。

JSON的格式如下:

[{
    "date": "2017-02-10",
    " action": "Do a thing",
    "state": "closed",
    "url": "https:someurl.com"
}, 
....

我有一些HTML here,它只存在于读取和输出JSON。

HTML看起来像这样:

<html>

<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>

<body>
    <script>
        deadlines = []
        start();

        function start() {
            var req = new XMLHttpRequest();
            req.open("GET", "http://joereddington.com/deadlines.json");
            req.overrideMimeType("application/json");
            req.send(null);
            req.onreadystatechange = function() {
                if (req.readyState == 4 && req.status == 200) {
                    var obj = JSON.parse(req.responseText);
                    deadlines = obj
                    for (deadline in deadlines) {
                        var output = '';
                        for (var property in deadline) {
                            console.log(property)
                            output += property + ': ' + deadline[property] + '; ';
                        }
                        console.log(output);
                        console.log(deadline.date)
                        console.log(deadline.action)
                    }
                }
            };
        }
    </script>

</body>

然而,当我尝试列出每个对象的属性时,我得到了非常奇怪的结果:

enter image description here

而不是我正在寻找的名称和价值观。有人能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:2)

$.each(JSON.parse(deadlines), function (index, deadline) {
    var output = '';
    for (var property in deadline) {
        console.log(property)
        output += property + ': ' + deadline[property] + '; ';
    }
    console.log(output);
    console.log(deadline.date);
    console.log(deadline.action);
});

您的JSON字符串包含额外空间。它应该是“行动”而不是“行动”。

答案 1 :(得分:0)

for...in遍历键(因为它是一个数组:"0""1" ...)。使用for...offorEach或基本for循环。

我建议像forEach这样:

deadlines.forEach(function(deadline) {
    // ...   
});