0

我正在使用以下代码,但出现错误:JSON 未定义。有任何线索吗?

<html>  

<head>  

    <title>Demo - Covnert JSON to CSV</title>  

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

    <script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>  



    <script type="text/javascript">  

        // JSON to CSV Converter  

        function ConvertToCSV(objArray) {  

            var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;  

            var str = '';  



            for (var i = 0; i < array.length; i++) {  

                var line = '';  

                for (var index in array[i]) {  

                    if (line != '') line += ','  



                    line += array[i][index];  

                }  



                str += line + '\r\n';  

            }  



            return str;  

        }  



        // Example  

        $(document).ready(function () {  



            // Create Object  

            var items = [  

                 {
    "items": [
        {
            "ID": "1",
            "NAME": " John"
        },
        {
             "ID": "2",
            "NAME": " Ashley"
        },
        {
            "ID": "3",
            "NAME": " Joseph"
        }
    ]
}];


            // Convert Object to JSON  

            var jsonObject = JSON.stringify(items);  



            // Display JSON  

            $('#json').text(jsonObject);  



            // Convert JSON to CSV & Display CSV  

            $('#csv').text(ConvertToCSV(jsonObject));  

        });   

    </script>  

</head>  

<body>  

    <h1>  

        JSON</h1>  

    <pre id="json"></pre>  

    <h1>  

        CSV</h1>  

    <pre id="csv"></pre>  



</body>  

</html> 
4

2 回答 2

0

JSON.parse在过时的浏览器中不存在,尤其是 IE7。您收到该错误是因为浏览器没有为您提供window.JSON.

因此,您正在使用json2.js. 但是,github 不希望您热链接到文件,因此将其作为text/plain. 这会导致浏览器不将其解释为脚本,因此它永远不会执行,也不会JSON提供任何对象。

您需要json2.js自己托管,或查找并使用 CDN。

于 2013-08-21T09:47:15.337 回答
0

在 for 循环之前添加以下行:

array = array[0].items;

基本上,您解析的 JSON 是一个包含一个对象 items 的数组,它本身就是一个由三个对象组成的数组。你只是没有得到正确的数组。

于 2013-08-21T10:00:38.793 回答