为什么JSON.parse不起作用?

4

为什么JSON.parse的行为与预期不符? 在这个例子中,弹出框不会被触发:

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <title>Testing JSON.parse</title>
        <script type="text/javascript" src="js/json2.js">
            // json2.js can be found here: https://github.com/douglascrockford/JSON-js/blob/master/json2.js
        </script>
        <script type="text/javascript">
            function testJSONParse()
            {
                var text = '[{"a":"w","b","x"},{"a":"y","b":"z"}]';
                alert(JSON.parse(text));
            }
            window.onload = testJSONParse;
        </script>
    </head>
    <body>

    </body>
</html>

在Firefox中,错误控制台显示“JSON.parse”。这并不是很描述清楚。
这是我遇到的一个问题的简化版本,该问题使用AJAX从数据库获取数据,并将结果作为与上面示例中的“text”相同形式的JSON字符串(表示JSON对象的字符串)获取。
2个回答

10

您的 JSON 格式不正确:

var text = '[{"a":"w","b","x"},{"a":"y","b":"z"}]';
                         ^-- This should be a ':'

它应该是这样的:

var text = '[{"a":"w","b":"x"},{"a":"y","b":"z"}]';

我认为无论哪种方式,它都是有效的JSON。 - Jon
同意 Rocket 的观点。在对象字面量中,你不能只有键而没有值。 - jpsimons

2

打字错误

变量text的值为 '[{"a":"w","b":"x"},{"a":"y","b":"z"}]'。

//below is correct one
var text = '[{"a":"w","b":"x"},{"a":"y","b":"z"}]';
alert(JSON.parse(text));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接