CSV-JSON转换时出错

时间:2013-08-21 09:42:54

标签: javascript jquery json csv

我正在使用以下代码,但我收到错误: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> 

2 个答案:

答案 0 :(得分:0)

JSON.parsenot present in outdated browsers,最值得注意的是IE7。您收到该错误是因为浏览器未向您提供window.JSON

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

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

答案 1 :(得分:0)

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

array = array[0].items;

基本上,您解析的JSON是一个包含一个对象items的数组,这些对象本身就是一个包含三个对象的数组。你刚才没有找到正确的阵列。